Angular 解析 Rxjs 映射并订阅多个 API
Angular resolve Rxjs map and subscribe multiple APIs
应用需要先获取jwt token,然后使用token,收集portal信息。此代码是用解析器编写的。
此代码产生错误异常:
Type 'Subscription' is not assignable to type 'Observable'
移除 Observable<any>
后,解析数据在组件中不可用,它会在解析完成之前启动组件
@Injectable()
export class PortalLoadingResolverService implements Resolve<any> {
constructor(
private authService:AuthService,
private emiDataService:EmiDataService,
) { }
resolve():Observable<any> {
return this.authService.getJwtToken()
.map(res => res.json())
.subscribe(JwtToken => {
debugger;
localStorage.setItem('id_token',JwtToken.token);
return this.emiDataService.getBasicLoadingDatas();
});
}
}
你的方法不是 returning Observable
这里,这就是 Typescript 大喊大叫。因为一旦你在 Observable
上应用了 subscribe 方法,它就会成为可观察的 return Subscription
。通过将 Observable 与 switchMap
运算符链接起来,您可以轻松 return 一个 Observable
。
resolve():Observable<any> {
return this.authService.getJwtToken()
.map(res => res.json())
.switchMap(JwtToken => {
localStorage.setItem('id_token',JwtToken.token);
return this.emiDataService.getBasicLoadingDatas();
});
}
应用需要先获取jwt token,然后使用token,收集portal信息。此代码是用解析器编写的。
此代码产生错误异常:
Type 'Subscription' is not assignable to type 'Observable'
移除 Observable<any>
后,解析数据在组件中不可用,它会在解析完成之前启动组件
@Injectable()
export class PortalLoadingResolverService implements Resolve<any> {
constructor(
private authService:AuthService,
private emiDataService:EmiDataService,
) { }
resolve():Observable<any> {
return this.authService.getJwtToken()
.map(res => res.json())
.subscribe(JwtToken => {
debugger;
localStorage.setItem('id_token',JwtToken.token);
return this.emiDataService.getBasicLoadingDatas();
});
}
}
你的方法不是 returning Observable
这里,这就是 Typescript 大喊大叫。因为一旦你在 Observable
上应用了 subscribe 方法,它就会成为可观察的 return Subscription
。通过将 Observable 与 switchMap
运算符链接起来,您可以轻松 return 一个 Observable
。
resolve():Observable<any> {
return this.authService.getJwtToken()
.map(res => res.json())
.switchMap(JwtToken => {
localStorage.setItem('id_token',JwtToken.token);
return this.emiDataService.getBasicLoadingDatas();
});
}