我正在尝试使用rxjs添加错误处理拦截器,但是由于“ catch”闪烁红色而导致编译问题
intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpSentEvent | HttpHeaderResponse | HttpProgressEvent | HttpResponse<any> | HttpUserEvent<any>> {
console.log(req);
return next.handle(req).catch(error => {
if (error instanceof HttpErrorResponse) {
this.messageService.error(`Błąd połączenia: ${error.message}`);
}
return observableThrowError(error);
});
}
}
答案 0 :(得分:3)
在较新的rxjs版本中,您必须使用管道运算符并在其中捕获。 ref
示例:
intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpSentEvent | HttpHeaderResponse | HttpProgressEvent | HttpResponse<any> | HttpUserEvent<any>> {
return next
.handle(req)
.pipe(catchError( (error: HttpErrorResponse) => {
this.messageService.error(`Błąd połączenia:${error.message}`);
return throwError(error);
}
))
}