У меня есть многостраничное приложение 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();
}
});`