0

从控制器我向主题输入参数

  selectImport(event){
      this.importacionService.onChildSelectImportChanged.next(event);
  }

从我的组件importacion.component.ts中我订阅了这个主题

this.importacionService.onSelectImportChanged.subscribe( addImport => {

    this.importacionService.addImport(this.month, addImport);
   });


  }

现在一切都很好,但是当我关闭 importacion.component.ts 的对话框并再次执行此操作时,主题会创建第二个 suscbripcion 并因此创建 2 个观察者,然后当我使用 .next() 输入新数据时,订阅者会运行两次。

我该如何控制这种行为,我的预期行为是只存在于我的主题中并提供参数,并且仅在其值更改时运行

4

1 回答 1

1

把它放在你的组件中

private subscription: Subscription;

ngOnInit() {
    this.subscription = this.importacionService.onSelectImportChanged.subscribe(...);
}

ngOnDestroy() {
    if (this.subscription){
        this.subscription.unsubscribe();
    }
}

您需要取消订阅您自己创建或管理的 observables

于 2017-12-13T13:47:26.300 回答