1
我有一個observables數組。訂閱取消訂閱()
在我的ngOnInit()
方法中,我初始化了我的訂閱。
this.lineOrdersSub[line.$key] = this.af.database.list(this.businessService.path + 'line_orders/' + line.$key)
.subscribe((lineOrders) => {
this.line_orders[line.$key] = lineOrders;
});
我也有每個訂閱複選框。當勾選複選框(默認)時,訂閱處於活動狀態(訂閱新數據)。
當我取消複選框,我這樣做:
unCheckmethod() {
this.lineOrdersSub[line.$key].unsubscribe(); //Unsubscribe to my subscription
this.line_orders[line.$key] = null; // Remove the data I get after the subscription (See first code snippet)
}
我不選方法效果很好,但在我試圖啓動訂閱再次:
checkMethod() {
this.lineOrdersSub[line.$key].subscribe();
}
我得到:
this.lineOrdersSub[line.$key].subscribe is not a function
我的問題:
- 如何在訂購I
unsubscribe
後訂閱訂閱?如果不可能,你能想出其他辦法來做到這一點嗎?
感謝martin,糾正我,如果我錯了 - 我將不得不聲明1.訂閱,2.使用2個不同的變量觀察相同的元素?另外,我是否必須在我的初始訂閱中再次寫入所有內容? – TheUnreal
@TheUnreal如果你想能夠訂閱和取消訂閱,你總是需要兩個變量。一個持有Observable(這就是你要調用'subscribe(...)'的地方),另一個持有從'subscribe(...)'調用返回的Subscription對象。這就是你要調用'unsubscribe()'的地方。 – martin