仅为自定义ErrorHandling无法正确显示Angular 5材质快餐栏,否则它可以正常工作

时间:2018-05-16 13:58:07

标签: javascript angular typescript angular5 angular-material2

Angular 5材质,材料零食栏无法正确显示自定义ErrorHandling,否则它可以正常工作:

我试图使用材料零食栏显示我的后端错误,问题是它第一次被触发时,它出现在错误的位置(不是底部中间,因为它应该,但是在左边)&它会永远停留在那里而不会消失(根据我的配置,它会在2秒后自动消失)

下次出现时,它会正确显示& 2秒后消失。

请在此处尝试此问题: stackblitz example showing my issue.

The stackblitz code is here

由于

1 个答案:

答案 0 :(得分:3)

我花了很长时间才找到答案,我不太清楚它为什么会这样,但确实有效,所以我希望它可以帮助别人。

在调用ErrorHandler中的材料快餐栏时,我们必须使用一个名为NgZone的东西(我认为由于在Angular中以某种特殊方式调用了ErrorHandler)

所以调用snackbar的代码应该是:

constructor(private matSnackBar: MatSnackBar, private zone: NgZone, private dataService: DataService) { }
notify (message: string) {
    this.zone.run(() => {
      this.matSnackBar.open(message, '' , {
        duration: 2000
      });
    });
  }

Updated Stackblitz that is now working