我有一系列可观察物。
在我的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)
}
我的uncheck方法效果很好,但在我尝试再次使用以下命令启动订阅后
checkMethod() {
this.lineOrdersSub[line.$key].subscribe();
}
我明白了:
this.lineOrdersSub[line.$key].subscribe is not a function
我的问题:
unsubscribe
之后如何订阅订阅?如果不可能,您能想到其他任何方式吗?答案 0 :(得分:2)
错误是正确的。您正在致电:
this.lineOrdersSub[line.$key] = this.af.d ... .subscribe(...);
表示您将Subscription
对象分配给this.lineOrdersSub[line.$key]
。不是观察者。
然后调用.unsubscribe()
显然可以正常工作。当您尝试调用subscribe()
时,它会失败,因为Subscribtion对象没有subscribe()
方法。
您必须订阅Observable。