ngx-toastr,在Angular 7中不显示Toast

时间:2018-12-31 16:20:53

标签: angular toastr

我目前正在使用Angular 7开发一个Web应用程序。我想包含ngx-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) { }
}

我在我的项目中的angular.json文件中包括库css文件,如下所示:

     ...        
     "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'
    })
   ]
...

我不知道自己在做什么错,有人经历过类似的经历吗?提前非常感谢!

15 个答案:

答案 0 :(得分:74)

我能够对您的问题进行最小程度的再现,但我没有发现任何问题: https://stackblitz.com/edit/angular-avcidu

是否可能有一些与toastr.css样式冲突的自定义样式,或者模板格式错误(例如,未封闭的div)?

您是否正在使用最新版本的ngx-toastr? (在撰写本文时为9.1.1)

您的模板是什么样的?

更新:

以前的堆栈闪电现在显示了复制的问题。再次是链接:https://stackblitz.com/edit/angular-avcidu

bootstrap和ngx-toastr之类的外观都使用.toastr类,从而影响toastr div上的opacity属性。

此线程有一个可行的答案:Setting toastr opacity?

答案是将不透明度强制为1。添加您的自定义样式表:

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

这是工作中的闪电战:https://stackblitz.com/edit/angular-gjazzq

答案 1 :(得分:7)

这与Toasts随附的新引导程序版本密切相关。 这是一个讨论它的问题:

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

我本人确实保留了“旧的” 4.1.3引导程序,并会密切关注下一个ng-bootstrap版本,这样我就不会破解CSS了:)

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

答案 2 :(得分:2)

即使在我的global style.scss中添加了以上答案中的不透明CSS代码之后,它也不能完全解决我的问题;我得到一个空白的白框。

添加了GitHub post中提到的其他CSS之后,这些吐司就可以正常工作。

以上帖子中的相关代码如下:

/* 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 :(得分:2)

我知道这个问题已经3个月了,但只是想通知所有人最新的变化。 ngx-toastr v10.0.2在Bootstrap v4.2.1中不再存在此错误

因此更新ngx-toastr应该可以解决此问题。它对我有用:)

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

答案 4 :(得分:1)

Keenan Diggs' answers的替代方法是在ToastrModule定义中提供一个附加的样式类,该类将opacity设置为1。IMO这一点更加清楚了我们在此处要实现的目标,并且也不必依赖在#toast-container上。

app.module.ts:

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

别忘了原来的toast类。

您的(s)css文件:

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

答案 5 :(得分:1)

在我的情况下,这是由于某些CSS之间的冲突引起的。我通过在<{1}}

中简单地导入ngx-toastr样式来重写CSS。

styles.scss

@import'〜ngx-toastr / toastr.css';

答案 6 :(得分:0)

当我阅读此主题时,我想您可以解决您的问题。但是,除非有人可能和我们一样,否则我将在这里留下解决问题的方法。

我为解决此问题所做的工作是:将> python3 test.py 1 3 2 6 5 4 10 9 8 7 15 14 13 12 11 21 20 19 18 17 16 28 27 26 25 24 23 22 36 35 34 33 32 31 30 29 > 添加到项目根目录下的@import '~ngx-toastr/toastr.css';中将解决此问题。

答案 7 :(得分:0)

我遇到了这个问题,我注意到它可以正常工作,但是没有正确呈现CSS,因此我检查了node_modules / toastr文件夹,意识到还有其他CSS文件,请尝试包括所有css文件,因为这对我。

在您的angular.json文件中添加css文件,然后尝试再次运行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"
       ],

答案 8 :(得分:0)

我再次遇到了这个问题。上面的资源说它是固定的,但对我来说不是。即使在获取了Bootstrap和Toastr的最新资源之后。经过大量调查,我发现只需在相关的烤面包机警报类型背景中添加“!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;}

尽管不是很好的做法,但我在.min.css文件中添加了代码。但是,我们确实将这些文件托管在我们的AWS CloudFront CDN中,并且不需要重复的CDN。

答案 9 :(得分:0)

对我来说,这些解决方案都无济于事。最后,我要做的是在Angular.json中为生产配置进行设置:

    "extractCss": false

答案 10 :(得分:0)

您需要导入

import { BrowserAnimationsModule } from '@angular/platform-browser/animations';

并将其添加到@NgModule导入下

import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
@NgModule({
  declarations: [
   ......
  ],
  imports: [
     ......
    BrowserAnimationsModule,
    ToastrModule.forRoot({ timeOut: 2000 enableHtml: true }),
  ],
  providers: [
    ToastService,
     ......
  ],
  bootstrap: [AppComponent]
})

答案 11 :(得分:0)

检查依赖性。

ngx-toastr dependency

OR

尝试修复css导入或

您可以从此处toastr.css复制CSS,并将其粘贴到全局CSS或

创建一个新的CSS文件,并将该文件路径添加到

angular.json->样式:[...,“您的/样式/路径/toastr.css”]

答案 12 :(得分:0)

对于Angular-材料或任何角度项目,我们应该需要按顺序导入模块 在您的app.module.ts中是这样的:

imports: [
 BrowserModule,
 BrowserAnimationsModule,
 ToastrModule.forRoot({
    timeOut: 3000,
    positionClass: 'toast-bottom-right',
    preventDuplicates: true,
    closeButton: true
 })
]

答案 13 :(得分:0)

对于我来说,我要解决的问题是:通过添加

 @import '~ngx-toastr/toastr.css';

进入style.css-角度应用程序的根文件夹中的主要样式

答案 14 :(得分:0)

我已经导入了 ~ngx-toastr/toastr.css 但它不起作用。所以,我复制了上述文件中的所有 CSS 并将其粘贴到我的 style.css 中。

它对我有用。