如何捕获Angular 2中的内联模板错误?

时间:2017-01-10 18:31:16

标签: angular typescript

假设我有以下组件:

@Component({
  template: '<div>{{foo.bar}}</div>'
})
class DemoComponent {
  foo = undefined;
}

注意我是如何尝试访问未定义值的bar属性的。这会引发类似于:

的错误
  

类DemoComponent中的错误 - 内联模板:1:9导致:无法读取属性&#39; bar&#39;未定义的

我想使用custom ErrorHandler

来捕获此错误
class LoggingErrorHandler implements ErrorHandler {
  constructor(private logger: Logger) {
  }

  handleError(error: any): void {
    this.logger.error(error);
  }
}

但是,不会为模板错误调用handleError方法。我的自定义错误处理程序适用于其他错误 - 只是模板错误。那么如何捕获模板错误呢?

1 个答案:

答案 0 :(得分:0)

您可以使用*ngIf="!foo.bar"创建模板。

如果它是您正在等待的异步请求,您可以使用异步管道和安全运算符来等待值而不会抛出错误:(foo | async).bar

有一个特殊的理由为此设置模板错误处理程序吗?