在所有待处理订阅都发出值

时间:2018-05-03 21:42:43

标签: angular typescript

我有一个多页面的Angular 4应用程序。

该应用程序的主页订阅了多个Observable来呈现一些内容。

我正在存储所有订阅句柄并在ngOnDestroy中取消订阅它们。理想情况下,当我们离开此页面时,此页面上的组件应该被销毁,应该调用ngOnDestroy,并且所有待处理的订阅都将被取消。

问题是当我导航到另一个页面时,在所有挂起的订阅都发出值之前,不会触发ngOnDestroy。

有趣的是,它只是第一次发生。如果我回到主页并再次转到上一页,那么再次启动的待定订阅会立即取消。

在每个页面/组件的ngOnInit和ngOnDestroy中添加consloe.log以确认流程。

不幸的是,代码太过涉及为它添加一个plunkr。只是想与社区核实是否有人看到过这种行为并知道原因。

PS:我确实有解决此问题的方法。我正在订阅路由器事件并使用NavigationStart取消订阅(如下所示),但我不想将其添加到我的每个组件中。

`this.router.events.subscribe((event: any): void => {
    if (event instanceof NavigationStart) {
        this.dataSub && this.dataSub.unsubscribe();
    }
});`

0 个答案:

没有答案