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

bat*_*anz 7 typescript angular

假设我有以下组件:

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

请注意我是如何尝试访问bar未定义值的属性的.这会抛出类似于的错误:

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

我想使用自定义ErrorHandler来捕获此错误:

class LoggingErrorHandler implements ErrorHandler {
  constructor(private logger: Logger) {
  }

  handleError(error: any): void {
    this.logger.error(error);
  }
}
Run Code Online (Sandbox Code Playgroud)

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

Fus*_*sin 1

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

如果您正在等待一个异步请求,您可以使用带有安全运算符的异步管道来等待该值而不会引发错误:(foo | async).bar

为此有一个模板错误处理程序有什么特殊原因吗?