我正在从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;
}
答案 0 :(得分:1)
您应该能够从RxJS导入而不是操作符
从“ rxjs”导入{of}
此外,不要将catchError链接到地图之外,而应将其作为传递到管道中的第二个参数。