從我對Angular和RxJs的理解中,有兩種終止Observables的方法。你可以從他們unsubscribe()
或使用takeUntil()
和complete()
。以下是每種方法的示例(僞代碼)。Angular - 終止Observables的首選方法是什麼?
取消訂閱()方法
private _id: number;
private _subscriptions: Subscription[] = [];
constructor(private _route: ActivatedRoute) {
this._getId();
}
public ngOnDestroy(): void {
this._subscriptions.forEach(
subscription => subscription.unsubscribe()
);
}
private _getId(): void {
this._subscriptions.push(
this._route.params.subscribe(params => this._id = +params['id'])
);
}
的takeUntil()和完全的()方法
private _id: number;
private _ngUnsubscribe: Subject<void> = new Subject<void>();
constructor(private _route: ActivatedRoute) {
this._getId();
}
public ngOnDestroy(): void {
this._ngUnsubscribe.next();
this._ngUnsubscribe.complete();
}
private _getId(): void {
this._route.params.takeUntil(this._ngUnsubscribe).subscribe(
params => this._id = +params['id']
);
}
在角,有沒有終止觀測量的優選方法是什麼?
的首選方式是在'ngOnDestroy',你在做什麼。我想補充的唯一一件事就是檢查值是「truthy」,意思不是空或不是不確定的,否則你會得到嘗試調用'退訂錯誤()'。 – Lansana
並注意你往往不需要終止共同觀測,比如在你的榜樣路由器參數。角自動終止它們。看近的文檔的這部分底部的註釋:https://angular.io/guide/router#activatedroute-the-one-stop-shop-for-route-information – DeborahK
參見[這個答案](HTTPS:/ /stackoverflow.com/a/41177163/2545680) –