【发布时间】:2020-01-27 05:35:05
【问题描述】:
我将我的应用程序更新到 Angular 8 并且有新版本的 rxjs ~6.4.0。现在我的 .map 功能不起作用,我在 VC 中有一个错误
“可观察”类型上不存在属性“地图”。
我尝试通过多种方式导入地图
import 'rxjs/add/operator/map';
或者这样
import { map } from 'rxjs/operators';
结果一样。 代码如下
canActivate(next: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> {
const email = this.userInfo.email;
return this.routApi.checkUser(email).map(e => {
this.tradeOperService.writeOperRoomFromResponse(e);
return true;
}).catch((e) => {
if (e.error === 'traderoom') {
this.router.navigate(['registration']);
}
if (e.status === 500) {
this.authService.logout().subscribe(
suc => {
this.tokenService.deleteToken();
this.tradeOperService.deleteOperRoomInfo();
this.router.navigate(['login']);
},
err => {
this.OperRoomService.deleteOperRoomInfo();
this.tokenService.deleteToken();
}
);
}
return Observable.of(false);
});
这里的错误
return this.routApi.checkUser(email).map(e => {
与代码末尾的“of”相同的情况
return Observable.of(false);
【问题讨论】:
-
根据这个站点:update.angular.io/#5.0:8.0,您可以尝试以下两个命令来尝试自动转换您的 RxJS 代码:npm (1)
install -g rxjs-tslint(2)rxjs-5-to-6-migrate -p src/tsconfig.app.json -
新版本需要进行大量更改 (1) 现在所有导入都来自
rxjs或rxjs/operators(2) 管道方法需要使用任何运算符 (3)Observable.of是现在只是of(4)catch现在是catchError