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()