catchError在类型上不存在(ret:any)

时间:2018-09-16 16:02:26

标签: angular rxjs

我正在从Angle 4应用程序升级到Angle 6应用程序,并且rxjs map函数和rxjs Of运算符存在问题。我知道您需要使用可移运算符,但不确定为什么它仍会给出错误

以下是我要转换的功能,但语法上不正确。你能让我知道我要去哪里了吗?

    upload(url: string, body: any) {
            this._userService.touched.next(null); // touch
            const stream = this._proxy.fileUpload(url, body).map(ret => ret.originalResponse).catch((error: any) => {
                if (error.status === 401) {
                    this._userService.unauthorized();
                    return Observable.of(null);
                } else {
                    return Observable.throw(error);
                }
            });
            return stream;
        }

修改后的代码

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

         upload(url: string, body: any) {
        this._userService.touched.next(null); // touch
        const stream = this._proxy.fileUpload(url, body).pipe(map((ret => ret.originalResponse).catchError((error: any) => {
            if (error.status === 401) {
                this._userService.unauthorized();
                return of(null);
            } else {
                return Observable.throw(error);
            }
        })));
        return stream;
    }

1 个答案:

答案 0 :(得分:1)

您应该能够从RxJS导入而不是操作符

从“ rxjs”导入{of}

此外,不要将catchError链接到地图之外,而应将其作为传递到管道中的第二个参数。