在Angular 2中,有些觀察對象不需要取消訂閱。例如http請求和activatedRoute.params。在Angular 2的rxjs中使用switchMap操作符時,我們是否需要取消訂閱?
Angular/RxJs When should I unsubscribe from `Subscription`
但是當我使用switchMap上例如activatedRoute.params和switchMap裏面我訪問返回一個可觀察的,如果按照通常的方式認購,將需要退訂服務會發生什麼。
事情是這樣的:
this.activatedRoute.params
.switchMap((params: Params) => this.userService.getUser(+params['id']))
.subscribe((user: User) => this.user = user);
如果我叫this.userService沒有switchMap,沒有activatedRoute.params我將不得不從它退訂。
// userService.getUser() takes in optional id?: number.
this.subscription = this.userService.getUser().subscribe(
(user: User) => {
this.user = user;
}
);
再後來..
this.subscription.unsubscribe();
我的問題是,我需要從activatedRoute.params退訂,如果我用它switchMap和調用將需要退訂,否則服務?
我認爲你應該總是退訂路由器 –