ngOnDestroy не запускается при навигации по маршруту, пока все ожидающие подписки не передадут значение - PullRequest
0 голосов
/ 04 мая 2018

У меня есть многостраничное приложение Angular 4.

Домашняя страница приложения подписывается на несколько Observables для визуализации нескольких вещей.

Я храню все дескрипторы подписки и отписываюсь от них в ngOnDestroy. В идеале, когда мы уходим от этой страницы, компоненты на этой странице должны быть уничтожены, должен быть вызван ngOnDestroy, и все ожидающие подписки должны быть отменены.

Проблема заключается в том, что при переходе на другую страницу ngOnDestroy не запускается до тех пор, пока все ожидающие подписки не передадут значение.

Самое смешное, что это происходит только в первый раз. Если я вернусь на домашнюю страницу и снова зайду на предыдущую страницу, то ожидающая возобновившаяся подписка будет немедленно отменена.

Добавлены consloe.logs в ngOnInit и ngOnDestroy каждой страницы / компонента для подтверждения потока.

К сожалению, код слишком сложен, чтобы добавить для него plunkr. Просто хотел уточнить у сообщества, видел ли кто-нибудь такое поведение и узнать причину его.

PS: у меня есть обходной путь для этой проблемы. Я подписываюсь на события маршрутизатора и использую NavigationStart для отмены подписки (показано ниже), но я не хочу добавлять это к каждому моему компоненту.

`this.router.events.subscribe((event: any): void => {
    if (event instanceof NavigationStart) {
        this.dataSub && this.dataSub.unsubscribe();
    }
});`
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...