Skip to main content

rxjs_angular

map/switchMap

ngOnInit() {
this.hero$ = this.route.paramMap.pipe(
switchMap((params: ParamMap) =>
this.service.getHero(params.get('id')))
);
}

this.hero$.subscribe(res => console.log(res)); // {id:'1',name:'superman'}

this.id$ = this.route.paramMap.pipe(map(params => params.get('id')));

你可能想使用 RxJS 的 map 操作符。 但 HeroService 返回的是一个 Observable。 所以你要改用 switchMap 操作符来打平这个 Observable

Observable

unsubscribe

当在组件中订阅一个可观察对象时,你通常总是要在组件销毁时取消这个订阅。

但是也有少数例外情况不需要取消订阅。 ActivateRoute 中的各种可观察对象就是属于这种情况。

https://random-word-api.herokuapp.com/word?number=10

https://angular.cn/guide/practical-observable-usage