Angular 5 材质、材质小吃栏仅针对自定义错误处理无法正确显示,否则工作正常:
我试图使用材料小吃栏显示我的后端错误,问题是第一次被触发时,它出现在错误的位置(不是应有的底部中间,而是在左侧)并且它永远留在那里而不会消失(根据我的配置,它应该在 2 秒后自动消失)
下次出现时,它将正确显示并在 2 秒后消失。
请尝试这里的问题:stackblitz 示例显示了我的问题。 https://angular-euz5ss.stackblitz.io/
stackblitz 代码在这里 https://stackblitz.com/edit/angular-euz5ss?file=app%2Fapp.component.html
Thanks
我花了很长时间才找到答案,我不太确定为什么它会这样工作,但它确实有效,所以我希望它对其他人有帮助。
在 ErrorHandler 中调用材质小吃栏时,我们必须使用名为 NgZone 的东西(我认为是由于 ErrorHandler 在 Angular 中以某种特殊方式被调用)
所以调用snackbar的代码应该是:
constructor(private matSnackBar: MatSnackBar, private zone: NgZone, private dataService: DataService) { }
notify (message: string) {
this.zone.run(() => {
this.matSnackBar.open(message, '' , {
duration: 2000
});
});
}
更新了 Stackblitz,现在可以使用了 https://stackblitz.com/edit/angular-9pycyh?file=app%2FMyErrorHandler.ts
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)