Angular 5材质的小吃栏仅对于自定义ErrorHandling无法正确显示,否则可以正常工作

Ahm*_*ssy 4 javascript typescript angular-material2 angular angular5

Angular 5材质,材质小吃栏仅对于自定义ErrorHandling无法正确显示,否则工作正常:

我正在尝试使用材质小吃栏显示后端错误,问题是第一次触发时,它出现在错误的位置(不是应该在底部中间,而是在左边),并且永远存在在那里而不会消失(根据我的配置,它应该在2秒后自动消失)

下次出现时,它将正确显示并在2秒钟后消失。

请在此处尝试该问题: 显示我的问题的stackblitz示例。

这里是stackblitz代码

谢谢

Ahm*_*ssy 8

我花了很长时间才找到答案,我不太确定为什么会这样,但是它确实起作用,所以我希望它能对其他人有所帮助。

在ErrorHandler中调用材质小吃栏时,我们必须使用一种称为NgZone的东西(我认为由于ErrorHandler在Angular中以某种特殊方式被调用)

因此,调用小吃栏的代码应为:

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

更新了可以运行的Stackblitz