【发布时间】:2017-11-28 15:41:26
【问题描述】:
在 Angular 2 中有一些你不需要取消订阅的 observables。例如http请求和activatedRoute.params。
Angular/RxJs When should I unsubscribe from `Subscription`
但是,当我使用 switchMap 时会发生什么,例如在activatedRoute.params 中,我在该 switchMap 中访问了一个服务,该服务返回一个 observable,如果以通常的方式订阅则需要取消订阅。
类似这样的:
this.activatedRoute.params
.switchMap((params: Params) => this.userService.getUser(+params['id']))
.subscribe((user: User) => this.user = user);
如果我在没有 switchMap 和 activateRoute.params 的情况下调用 this.userService,我将不得不取消订阅。
// userService.getUser() takes in optional id?: number.
this.subscription = this.userService.getUser().subscribe(
(user: User) => {
this.user = user;
}
);
后来……
this.subscription.unsubscribe();
我的问题是,如果我在其上使用 switchMap 并调用需要取消订阅的服务,我是否需要取消订阅 activateRoute.params ?
【问题讨论】:
-
我认为您应该始终退订路由器