订阅者即使未订阅也正在触发

时间:2019-08-26 13:01:24

标签: typescript rxjs angular7 subscription eventemitter

在说5页的每一页中都有一个事件发射器和5个订阅者(第1页,第2页,第3页,第4页,第5页)

我在ngOnInit()上订阅了该事件,并在ngOnDestroy()上取消了订阅,

这些页面实际上是路由页面,即一次仅将一个页面加载到DOM

所以我的用例是 最初,我转到第1页并触发了事件发射器 然后我再次移至第2页,触发了事件发射器 我可以看到,此事件发射器在Page 1和Page 2中都触发了订阅

这是怎么可能的,因为我已经退订了, 我该如何解决?

ngOnInit() {
this.translationService = this.sharedService.language_english.subscribe(
      data => {
        console.log(data)
        this.trigger_translation_module(data);
      }
    );
}

 ngOnDestroy() {

    this.translationService.unsubscribe();
  }

1 个答案:

答案 0 :(得分:1)

我相信,改变角度路线不会调用销毁生命周期方法。

解决方法在下面的问题中进行讨论 https://github.com/NativeScript/nativescript-angular/issues/1049

如果您不需要根据页面专门更改服务,只需在app.component.ts构造函数中初始化它即可,而不是在每个页面中进行初始化