Обработка исключений угловой маршрутизации в обработчике ошибок
Как обрабатывать ошибки навигации в ErrorHandler
?
Я попытался использовать следующее условие, чтобы проверить, Error
объект имеет NavigationError
но это говорит ложь.
export class AppErrorHandler implements ErrorHandler {
constructor() { }
handleError(error: Error) {
if (error instanceof NavigationError) {
//do something here, may be notify or redirect to error page.
}
}
Как обрабатывать ошибки навигации маршрутизатора в
ErrorHandler
? Я не хочу добавлять групповую маршрутизацию.
Будет ли вышеуказанное условие работать, если тип правильный? Если да, то против какого типа я должен проверять?
2 ответа
@prajwal
попробуйте использовать следующий способ обработки ошибок, он должен работать на 99,9% =):
import { Router, NavigationError } from '@angular/router';
constructor( private router: Router) {
this.router.events.filter(e => e instanceof NavigationError).subscribe(e => {
console.log(`NAV ERROR -> ${e}`);
});
}
Результат:
Другой ответ был хорошей отправной точкой, но не работал с Angular 13, вот что я придумал
readonly router$: Subscription;
constructor(private router: Router){
this.router$ = this.router.events.pipe(
filter((e) => e instanceof RouterEvent),
filter((e) => e.constructor.name === 'NavigationError')
).subscribe((e: NavigationError) => {
console.error(`Could not load URL "${e.url}" ${e.error}`);
});
}
Не забудьте отписаться
ngOnDestroy() {
this.router$?.unsubscribe();
}