Обработка исключений угловой маршрутизации в обработчике ошибок

Как обрабатывать ошибки навигации в 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}`);
});

}

Результат:

Правильный относительный путь -./home, но я пытался идти дальше./home2

Другой ответ был хорошей отправной точкой, но не работал с 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();
}
Другие вопросы по тегам