Angular - ErrorHandler для перехватчика для пользовательской обработки ошибок HTTP - PullRequest
0 голосов
/ 17 марта 2019

У меня было разъяснение по поводу использования перехвата ErrorHandler для обработки пользовательских ошибок для запросов HTTP и ошибок на стороне клиента в Angular 6+.

Правильно вызывается для ошибок на стороне клиента. Но для ошибок HTTP пользовательский обработчик ошибок не вызывается при добавлении обработчика ошибок подписчику HTTP-запроса (см. Код ниже). В то же время пользовательский обработчик ошибок вызывается, когда обработчик ошибок удаляется из подписчика. Это ожидаемое поведение. Не удалось найти документ, связанный с этим в Angular doc.

.subscribe(
  success => {
    this.processGetChart(success);
  },
  error => {
    this.errors = error;
    console.log('API Error: ', error);
  },
  () => {
  }
  );

Спасибо

Peter

1 Ответ

0 голосов
/ 17 марта 2019

Вы можете иметь HttpInterceptor

А внутри вы ловите различные типы ошибок.

как этот:

@Injectable()
export class customInterceptor implements HttpInterceptor {

  constructor() {
  }

  intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {

    return next.handle(request).pipe(
      tap((event: HttpEvent<any>) => {
        }, (err: any) => {
          if (err instanceof HttpErrorResponse) {
            if (err.status === 403 || err.status === 401) {
              // DO SOMETHING HERE.
            }
          }
        }
      )
    );
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...