即使取消订阅,订阅者也会触发
Posted
技术标签:
【中文标题】即使取消订阅,订阅者也会触发【英文标题】:Subscriber is triggering even it is unsubscribed 【发布时间】:2019-12-30 16:12:30 【问题描述】:我在 5 个页面中的每个页面中都有一个事件发射器和 5 个订阅者(第 1 页、第 2 页、第 3 页、第 4 页、第 5 页)
我在 ngOnInit() 上订阅了该事件并在 ngOnDestroy() 上取消订阅,
这些页面实际上是路由页面,即一次只会将一个页面加载到 DOM 中
所以我的用例是 最初我转到第 1 页并触发了事件发射器 然后我移动到第 2 页再次触发了事件发射器 我可以观察到这个事件发射器在第 1 页和第 2 页都触发了订阅,
怎么可能,因为我已经退订了, 我该如何解决这个问题?
ngOnInit()
this.translationService = this.sharedService.language_english.subscribe(
data =>
console.log(data)
this.trigger_translation_module(data);
);
ngOnDestroy()
this.translationService.unsubscribe();
【问题讨论】:
【参考方案1】:我相信角度路由更改不会调用销毁生命周期方法。
以下问题中讨论了解决方法 https://github.com/NativeScript/nativescript-angular/issues/1049
如果您不需要根据页面专门更改服务,您可以简单地在 app.component.ts
构造函数中初始化它,而不是在每个单独的页面中进行初始化
【讨论】:
以上是关于即使取消订阅,订阅者也会触发的主要内容,如果未能解决你的问题,请参考以下文章