Angular 取消订阅后订阅()
我有一系列可观察的东西 在我的Angular 取消订阅后订阅(),angular,typescript,rxjs,observable,angularfire2,Angular,Typescript,Rxjs,Observable,Angularfire2,我有一系列可观察的东西 在我的ngOnInit()方法中,我初始化订阅 this.lineOrdersSub[line.$key] = this.af.database.list(this.businessService.path + 'line_orders/' + line.$key) .subscribe((lineOrders) => { this.line_orders[line.$key] = lineOrders; }); 我还为每个订阅
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
我的问题:
错误是正确的。你的电话是:
this.lineOrdersSub[line.$key] = this.af.d ... .subscribe(...);
这意味着您正在为此.lineordersub[line.$key]
分配一个订阅
对象。不可见的
然后调用.unsubscribe()
显然可以正常工作。尝试调用subscribe()
时失败,因为subscribe对象没有subscribe()
方法
您必须订阅Observable。谢谢martin,如果我错了,请纠正我-我必须声明1。订阅,2。使用2个不同变量观察同一元素?另外,我是否需要在我的OnInit订阅中再次写入所有内容?@TheUnreal如果你想同时订阅和取消订阅,你总是需要两个变量。一个保存可观察对象(在这里您将调用
subscribe(…)
),另一个保存从subscribe(…)
调用返回的订阅对象。在这里您将调用unsubscribe()
。