HttpInterceptor catchError не ловит - Angular 7 - PullRequest
0 голосов
/ 28 января 2019

Я пытаюсь обработать ошибки HTTP с помощью перехватчика, но метод catchError, похоже, не срабатывает при возникновении ошибки (422).Ни одна из ошибок не перехватывается этим методом.Добавлены провайдеры в app.module (я могу читать события и 200 ответов).

import { Injectable } from '@angular/core';
import {
HttpRequest,
HttpHandler,
HttpEvent,
HttpInterceptor,
HttpErrorResponse, HttpResponse,
} from '@angular/common/http';

import {Observable, throwError} from 'rxjs';
import {catchError} from 'rxjs/operators';

@Injectable()
export class RequestInterceptor implements HttpInterceptor {

constructor() {}

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

return next.handle(request)
  .pipe(
    catchError((error: HttpErrorResponse) => {
      console.log(error);
      return throwError(error);
    }));
}
}

1 Ответ

0 голосов
/ 28 января 2019

попробуй так один раз, надеюсь, это тебе пригодится.

@Injectable()
export class HttpXsrfInterceptor implements HttpInterceptor {
   constructor(private tokenService: HttpXsrfTokenExtractor) { }

  intercept(req: HttpRequest<any>, next: HttpHandler): 
  Observable<HttpEvent<any>> {
    const headerName = 'X-XSRF-TOKEN';
    const token = this.tokenService.getToken() as string;
    if (token && !req.headers.has(headerName)) {
      req = req.clone({ headers: req.headers.set(headerName, token) });
    }

    return next.handle(req)
        .do(sucess => {/*todo*/}
            , err => this.handleError(err));
 }

 private handleError(err: any) {
    TODO: Handle error.
 }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...