【问题标题】:Catch exceptions from third party directives used in template从模板中使用的第三方指令中捕获异常
【发布时间】:2019-04-11 20:16:29
【问题描述】:
我在我的 Angular 应用程序中使用 angular-google-charts 库。
我在模板中使用它:
<google-chart
[title]="chart.title"
[type]="chart.type"
[data]="chart.data">
</google-chart>
如果用户离线,google-chart 会抛出异常,因为需要互联网连接。我通过将指令包装在*ngIf 中解决了这个问题,并检查了是否存在网络连接或更少。
但是,在更通用的上下文中,我如何从仅在模板中使用的第三方指令中捕获异常?
全局错误处理是唯一的可能性吗?
【问题讨论】:
标签:
angular
error-handling
angular2-template
angular-directive
【解决方案1】:
恐怕是这样。您可以在ErrorHandler btw 中操作一些过滤,根据具体的库异常。
如果第三方应用程序声明了特定的异常,您可以通过instanceof ThirdPartyExceptionType 进行检查。
import { Injectable, ErrorHandler } from '@angular/core';
import { ThirdPartyExceptionType } from 'thirdpartylibrary';
export class CustomErrorHandler implements ErrorHandler {
handleError(error: Error | ThirdPartyExceptionType ) {
if (error instanceof ThirdPartyExceptionType ) {
// do something
} else {
// do something else
}
}