[英]HttpInterceptor catchError does not catch - Angular 7
我正在嘗試使用攔截器處理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);
}));
}
}
嘗試這樣一次,希望對您有用。
@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.
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.