我有一个错误自定义处理程序类,实现Angular 5核心的ErrorHandler . 如果出现错误,handleError方法必须通知它发送显示的快餐栏材料组件 . 如果在测试按钮中抛出错误,一切都很好 .
如果ngOnInit方法出现错误,则小吃栏无法正常工作,并且它显示在页面的错误位置,您无法再将其关闭 .
I.E.
我的组件:
export class RootPageComponent implements OnInit {
constructor() {}
public buttonTest() {
it.happens;
}
ngOnInit() {
it.happens;
}
}
这是我的自定义错误处理程序:
export class ErrorHandlerCustom extends ErrorHandler {
constructor(...){}
handleError() {
const notificationService = this.injector.get(NotificationService);
// notification custom using snackbar material
notificationService.exceptionError(error);
}
}
ngOnInit错误的结果:ngOnInit error
点击测试按钮:click on test button
1 回答
我终于弄明白了这个问题 . 我不知道这是不是正确的方法 .
在很多情况下,错误处理程序将在Angular的区域之外运行 . 这会导致toast无法正常运行,因为更改检测不会在其上运行 . 所以有必要在正确运行中使用区域 .
在这里,我找到了我的解决方案,我发布它以防其他人遇到同样的问题:https://github.com/angular/material2/issues/9875