Исходя из этого вопроса Угловой перехват HTTP-ошибок , который решен, я столкнулся с огромной философской проблемой.
Все мои услуги выглядят так:
public getSomething(): Observable<Something> {
return this.http
.get<Something>(url)
.pipe(
map(res => res.data),
catchError((e): Observable<any> => of(e))
);
}
Если мой токен аутентификации недействителен / истек, служба перехватывает ошибку.
Я могу позвонить прямо сейчас.
Однако, если у меня много услуг, мне придется повторять этот процесс много раз. Поэтому мне нужно настроить перехватчик или пользовательский обработчик ошибок.
Оба не запускаются, если я сохраняю catchError в сервисах.
Если я решу остаться СУХИМ, мне нужно удалить catchError. Если я удаляю catchError, rxjs становится практически бесполезным (завершение, повторение и т. Д.)
Если я решу оставить catchError, мне нужно изменить их все, чтобы они вызывали какую-то глобальную функцию обработки ошибок, чтобы она оставалась СУХОЙ. Но тогда я не использую Angular, как должен.
Как мне справиться с этой ситуацией?
РЕДАКТИРОВАТЬ: https://stackblitz.com/edit/angular-m2jc9n
Там активен ErrorHandler, перехватчик комментируется в app.module.
Если вы удалите catchError из службы, сработает ErrorHandler, в противном случае catchError будет иметь приоритет.