网站搜索

angular - 在 Unsubscribe() 之后订阅


我有一个可观察对象的数组。

在我的 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

我的问题:

  1. 我在取消订阅后,怎么再次订阅?如果不可能,你能想到其他方法吗?

答案#1

错误是正确的。你调用的是:

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

这意味着你正在将一个 Subscription 对象分配给 this.lineOrdersSub[line.$key],而不是一个 Observable。

然后调用 .unsubscribe() 显然按预期工作。当你尝试调用 subscribe() 时,它会失败,因为 Subscription 对象没有 subscribe() 方法。

你必须订阅这个可观察对象。