如何告诉Angular在遇到异常时不阻止整个应用程序?
我不确定它是否可能,因为谷歌没有启发我.但它似乎对任何单页Web应用程序都至关重要.
Angular是快速的,但只要遇到异常并抛出错误,整个应用程序就会变得无法响应.
我知道在Javascript中
try {
doSomething();
}
catch(err) {
handleErrors(err);
}
Run Code Online (Sandbox Code Playgroud)
可能会解决问题.
但我只想知道是否有任何Angular特定解决方案或解决方法?
我正在尝试ExceptionHandler在Angular 2应用程序中实现自定义,该应用程序将未捕获的错误提交给自定义AlertsService.目标是允许主要App组件订阅由其提供的警报,AlertsService以便它可以在UI中显示错误.
我看到的问题是,在遇到另一个错误之前,提交给AlertsService自定义的错误ExceptionHandler不会反映在UI中.这导致UI总是在实际提供的内容之后的一个警报AlertsService.
我的猜测是这种行为与更改检测和ExceptionHandler的特殊情况有关,但我不确定从何处开始.期待Angular2专家的帮助!
下面的示例代码,请点击此处:https://plnkr.co/edit/xPoWCELA9IHqeLBS4wXs ? p = preview
import { Component, ExceptionHandler, Injectable, OnInit, provide } from '@angular/core';
import { bootstrap } from '@angular/platform-browser-dynamic';
import { Subject } from 'rxjs/Subject'
export interface Alert {
message: string;
}
@Injectable()
export class AlertsService {
private alertTriggeredSubject = new Subject<Alert>();
alertTriggered = this.alertTriggeredSubject.asObservable();
triggerAlert(message: string) {
this.alertTriggeredSubject.next(<Alert>{ message: message });
}
}
@Injectable()
export class CustomExceptionHander …Run Code Online (Sandbox Code Playgroud)