Angular 类型Observable上不存在属性捕获

Angular 类型Observable上不存在属性捕获,angular,rxjs,Angular,Rxjs,我正试图用rxjs添加错误处理拦截器,但我在编译它时遇到了一个问题,因为“catch”闪烁着红色 intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpSentEvent | HttpHeaderResponse | HttpProgressEvent | HttpResponse<any> | HttpUserEvent<any>> { console.lo

我正试图用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);
    });
}
intercept(req:HttpRequest,next:HttpHandler):可观察{
控制台日志(req);
返回next.handle(req.catch)(错误=>{
if(HttpErrorResponse的错误实例){
this.messageService.error(`Błd połczenia:${error.message}`);
}
返回ObservateThrowError(错误);
});
}

}

在较新的rxjs版本中,您必须使用管道操作符并在其中捕捉。

示例:

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);
            }
        ))
    }
intercept(req:HttpRequest,next:HttpHandler):可观察{
下一个返回
.句柄(req)
.pipe(catchError((错误:HttpErrorResponse)=>{
this.messageService.error(`Błd połczenia:${error.message}`);
返回投掷器(错误);
}
))
}