mirror of https://github.com/sindresorhus/awesome
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
24 lines
603 B
TypeScript
24 lines
603 B
TypeScript
import { ErrorHandler, Injectable, Injector, NgZone } from '@angular/core';
|
|
import { Router } from '@angular/router';
|
|
|
|
@Injectable()
|
|
export class GlobalErrorHandlerService implements ErrorHandler {
|
|
|
|
constructor(private injector: Injector, private zone: NgZone) { }
|
|
|
|
handleError(error: any) {
|
|
// handle and/or log error, for example:
|
|
console.error(error);
|
|
|
|
// show error page
|
|
const router = this.injector.get(Router);
|
|
if (router) {
|
|
this.zone.run(() => {
|
|
router
|
|
.navigate(['error'])
|
|
.catch((err: any) => console.error(err));
|
|
});
|
|
}
|
|
}
|
|
}
|