类型为Observable的属性捕获不存在

时间:2019-01-07 00:12:30

标签: angular rxjs

我正在尝试使用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);
    });
}

}

1 个答案:

答案 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);
            }
        ))
    }