ngx-toastr, тост не отображается в Angular 7

В настоящее время я разрабатываю веб-приложение с использованием Angular 7. Я хотел включить ngx-toastr для отправки уведомлений пользователям, но оно не работает должным образом. Когда я запускаю тост, ничего не происходит, за исключением прямоугольника размером с тост, который появляется в правом нижнем углу, но только когда курсор находится над ним. Следуя примеру того, как я запускаю функцию toastr. Тест вызывается нажатием кнопки.

import {ToastrService} from 'ngx-toastr';
@Component({
  selector: 'app-action-controls',
  templateUrl: './action-controls.component.html',
  styleUrls: ['./action-controls.component.scss']
})
export class Notification implements OnInit {
  test(){   
          this.toast.success("I'm a toast!", "Success!");
  }
 constructor(private toast: ToastrService) { }
}

Я включил библиотеку CSS файлов в файл angular.json в моем проекте следующим образом:

     ...        
     "styles": [
        "src/styles.scss",
        "node_modules/bootstrap/scss/bootstrap.scss",
        "node_modules/ngx-toastr/toastr.css"
      ],
      ...

И вот так в моем файле app.module.ts:

...
import {BrowserAnimationsModule} from '@angular/platform-browser/animations';
import {ToastrModule} from 'ngx-toastr';
...
  imports: [
    ...
    BrowserAnimationsModule,
    ToastrModule.forRoot({
      timeOut: 1000,
      positionClass: 'toast-bottom-right'
    })
   ]
...

Я не могу понять, что я делаю неправильно, у кого-нибудь был подобный опыт? Спасибо заранее!

Ответы

Ответ 1

Мне удалось минимально воспроизвести вашу проблему, и я не вижу никаких проблем: https://stackblitz.com/edit/angular-avcidu

Возможно ли, что у вас есть некоторые пользовательские стили, которые конфликтуют со стилями toastr.css, или шаблон, который искажен (например, незакрытый div)?

Вы используете последнюю версию ngx-toastr? (9.1.1 на момент публикации)

Как выглядит ваш шаблон?

Обновить:

В предыдущем стеке теперь показана повторяющаяся проблема. Вот ссылка снова: https://stackblitz.com/edit/angular-avcidu

Похоже, что и bootstrap, и ngx-toastr используют класс .toastr, влияя на свойство opacity в div toastr.

В этой теме есть действенный ответ: настройка непрозрачности toastr?

Ответ заключается в том, чтобы сделать прозрачность равной 1. Добавьте эту свою собственную таблицу стилей:

#toast-container > div {
    opacity:1;
}

А вот и рабочий стек-блиц: https://stackblitz.com/edit/angular-gjazzq

Ответ 2

Даже после добавления кода непрозрачности CSS из приведенных выше ответов в мой глобальный style.scss это не решило мою проблему полностью; Я получал пустую белую коробку.

После добавления дополнительных CSS, упомянутых в этом сообщении GitHub, тосты работают правильно.

Соответствующий код из поста выше:

/* TOASTR BUGFIX */
#toast-container > div {
  opacity: 1;
}
.toast {
  font-size: initial !important;
  border: initial !important;
  backdrop-filter: blur(0) !important;
}
.toast-success {
  background-color: #51A351 !important;
}
.toast-error {
  background-color: #BD362F !important;
}
.toast-info {
  background-color: #2F96B4 !important;
}
.toast-warning {
  background-color: #F89406 !important;
}

Ответ 3

Это тесно связано с новой версией начальной загрузки, которая идет с тостами. Вот проблема, обсуждающая это:

https://github.com/ng-bootstrap/ng-bootstrap/issues/2945

Я сам сохранил "старый" загрузчик 4.1.3 и буду следить за следующей версией ng-bootstrap, чтобы я не взломал css :)

#toast-container > div {
  opacity:1;
}

Ответ 4

Я знаю, что этот вопрос 3 месяца, но просто чтобы сообщить всем о последних изменениях. У ngx-toastr v10.0.2 больше нет этой ошибки с начальной загрузкой v4.2.1

Поэтому обновление вашего ngx-toastr должно решить эту проблему. Это сделал для меня :)

https://github.com/scttcper/ngx-toastr/releases

Ответ 5

Альтернативой ответам Кинана Диггса является предоставление дополнительного класса стилей в определении ToastrModule, который устанавливает непрозрачность 1. IMO, это немного более ясно, чего мы пытаемся достичь здесь, и также не должно зависеть от # toast- контейнер.

app.module.ts:

ToastrModule.forRoot({
  toastClass: 'toast toast-bootstrap-compatibility-fix'
}),

Не забудьте оригинальный класс toast.

Ваш (и) файл CSS:

.toast-bootstrap-compatibility-fix {
  opacity:1;
}

Ответ 6

Когда я читаю эту ветку, я думаю, вы могли бы решить вашу проблему. Тем не менее, я бы оставил решение моей проблемы здесь, если кто-то не может иметь то же самое, что и мы.

Что я сделал, чтобы решить эту проблему: добавить @import '~ngx-toastr/toastr.css'; в style.css под корневым каталогом проекта избавится от проблемы.

Ответ 7

У меня была эта проблема, и я заметил, что она работала, но не рендерил CSS должным образом, поэтому я проверил папку node_modules/toastr и понял, что есть другие файлы CSS, попробуйте включить все файлы CSS, потому что это сработало для меня.

добавьте файлы css в ваш файл angular.json и попробуйте снова запустить приложение yoru.

 "styles": [              
          "./src/assets/css/bootstrap.min.css",
          "......",              
          "./node_modules/ngx-toastr/toastr.css",
          "./node_modules/ngx-toastr/toastr-old.css",
          "./src/styles.css",
          ".......",
          "......",
          "./node_modules/@fortawesome/fontawesome-free/css/all.min.css"
       ],