处理 Angular html 冲突错误
2018-04-15
154
在 Angular 4 中,如果我转到 FirstComponent 并收到类似这样的错误:
ERROR TypeError: 无法读取未定义的属性“length”
您仍然可以在您的网站中导航,但如果路由到 SecondComponent,HTML Dom 会混淆并发生一些冲突,所以我会在 SecondComponent 中看到 FirstComponent 的内容(HTML 内容)。
有什么方法可以处理任何错误并避免这种混淆问题?
2个回答
如果遇到异常,Angular 会阻止组件渲染。这是默认错误处理程序的设计。如果您想更改此设置,则必须构建自己的错误处理程序(查看 Angular.io )。
基本上,您必须创建一个实现
ErrorHandler
接口的类(来自
@angular/core
),然后将其作为提供程序添加到您的 @NgModule。
示例(来自 Angular.io):
class MyErrorHandler implements ErrorHandler {
handleError(error) {
// do something with the exception
}
}
@NgModule({
providers: [{provide: ErrorHandler, useClass: MyErrorHandler}]
})
class MyModule {}
Daniel
2018-04-15
正如 Daniel 所说,这是 Angular 在模板中遇到错误时的默认行为。
我只想补充一点,您描述的错误类型,如
ERROR TypeError: Cannot read property 'length' of undefined
是开发错误。这不是您的用户在生产过程中随时可能遇到的问题。可以通过为您的属性提供默认值(如空数组)或在尝试显示信息之前正确检查它们来轻松避免这种情况。
希望有所帮助
Orodan
2018-04-15