取消订阅后订阅()

时间:2016-11-28 19:24:34

标签: 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;
});

我还为每个订阅设置了一个复选框。勾选复选框(默认)后,订阅处于活动状态(订阅新数据)。

当我取消选中复选框时,我会这样做:

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

我的问题

  1. unsubscribe之后如何订阅订阅?如果不可能,您能想到其他任何方式吗?

1 个答案:

答案 0 :(得分:2)

错误是正确的。您正在致电:

this.lineOrdersSub[line.$key] = this.af.d ... .subscribe(...);

表示您将Subscription对象分配给this.lineOrdersSub[line.$key]。不是观察者。

然后调用.unsubscribe()显然可以正常工作。当您尝试调用subscribe()时,它会失败,因为Subscribtion对象没有subscribe()方法。

您必须订阅Observable。