开发者问题收集

处理 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