Я использую следующее 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']);
}
}