Как использовать навигацию маршрутизатора в сервисе для резольверов в Angular 6? - PullRequest
0 голосов
/ 28 августа 2018

Я использую следующее ErrorHandleService, которое вызывается каждый раз, когда возникает ошибка в любом сервисе.

handleError<T> (operation = 'operation', result?: T) {
return (error: any): Observable<T> => {

  const errorBody = error.json();

  const userMessage = this.getUserMessage(errorBody.error);
  if (error.status === 403 || error.status === 404) {
    this.router.navigate(['error']);
  } else {
    if (userMessage === 'Es ist leider ein Fehler aufgetreten, bitte versuchen Sie es erneut') {
      this.logError(operation, errorBody.error).subscribe();
      console.log('An error has occured: ' + operation + ' (' + error.status + ')');
    }
    return throwError(userMessage);
  }
};

Для некоторых компонентов я реализовал преобразователи. проблема :

Если при доступе к маршруту с помощью распознавателя возникает ошибка HTTP (403 или 404), this.router.navigate['error'] не работает (отображается только пустая страница). В противном случае - без распознавателей - все работает, и пользователь пересылается на компонент ошибки, если возникает ошибка 403 или 404.

Может ли кто-нибудь помочь мне решить эту проблему?

EDIT:

Мои резольверы просто выглядят так:

@Injectable()
export class GetStaffsResolver implements Resolve<Array<Staff>> {

  constructor(private ss: StaffService) { }

  resolve(activatedRoute: ActivatedRouteSnapshot) {
    return this.ss.getStaffs(activatedRoute.queryParams['branch']);
  }
}

1 Ответ

0 голосов
/ 18 декабря 2018

Router.navigate - это метод, а не массив. Попробуйте позвонить с помощью

this.router.navigateByUrl('error');

вместо this.router.navigate['error'].

...