Custom ExceptionHandler change detection lag
update ExceptionHandler
was renamed to ErrorHandler
https://stackoverflow.com/a/35239028/217408
orgiginal
Change detection isn't run at the end of the click
event when the handler throws.
You can invoke change detection manually but this gets a bit complicated because you need an ApplicationRef
reference and ApplicationRef
depends on ExceptionHandler
which makes a neat cycle and DI can't resolve cyclic dependencies.
A workaround is to instead of ApplicationRef
inject the Injector
and acquire AplicationRef
imperatively like
constructor(private alertsService: AlertsService, injector:Injector) {
setTimeout(() => this.appRef = injector.get(ApplicationRef));
}
and then in call
invoke change detection like
call(exception, stackTrace = null, reason = null) {
this.alertsService.triggerAlert(exception.originalException);
this.appRef.tick();
console.error('EXCEPTION:', exception);
}
Plunker example