尝试将switchMap运算符应用于我的Observable时,我收到以下错误消息:
属性'switchMap'在'Observable'类型上不存在。
我目前正在使用rxjs版本5.5.2,在我的组件中,我将其导入如下:
import 'rxjs/operator/switchMap';
但是,我仍然遇到编译错误。我已经查看了类似的问题,并没有找到适当的解决方案,对这里的问题有任何建议吗?
get appUser$() : Observable<AppUser> {
return this.user$
.switchMap(user => {
if (user) return this.userService.get(user.uid);
return Observable.of(null);
});
}
答案 0 :(得分:9)
如果您正在使用旧的&#34;补丁&#34;您应该从rxjs/add/operator/switchMap
导入运营商的风格:
import 'rxjs/add/operator/switchMap';
由于RxJS 5.5带有&#34; pipable&#34;您应该从'rxjs/operators'
导入的运算符:
import { switchMap } from 'rxjs/operators';
答案 1 :(得分:2)
我假设您使用的是Angular 6,这意味着您使用的是最新版本的RxJS。您需要管道操作员。
obs $ .switchMap(()=> {做东西...});
现在是
obs $ .pipe(switchMap(()=> {做东西...}));
编辑:请记住,在您的情况下,此observable由this.refreshToken返回。
this.refreshToken()。pipe(switchMap(()=> {做东西...}));
答案 2 :(得分:0)
我认为,如果您使用的是Angular 6,则应使用管道
版本小于角度6,下面的代码将起作用
this.route.params.switchMap((data: Passengers) =>
this.passengerService.getPassenger(data.id))
.subscribe((data: Passengers) => this.passenger = data);
但是对于Angular 6,您应该通过管道传输操作符
this.route.params.pipe(switchMap((data: Passengers) =>
this.passengerService.getPassenger(data.id)))
.subscribe((data: Passengers) => this.passenger = data);