Comments 7
По моему опыту и тикету github.com/angular/angular/issues/30497 метод 5 работать не будет в продакшн-билде — ngOnDestroy, объявленный в дектораторе, не вызывается при AoT компиляции, если исходный компонент не содержит данный метод.
Как упомянуто в статье (может стоит выделить более жирным начертанием?) методы take/takeWhile приводят к утечкам памяти, если необходимые условия для отмены подписки не соблюдены. Простейший пример — использование filter до, либо switchMap/mergeMap после.
Если нужно корректно отписаться и при этом избежать утечек памяти — то async, unsubscribe и takeUntil (при условии, что тот стоит после всех остальных условий прямо перед подпиской).
Как упомянуто в статье (может стоит выделить более жирным начертанием?) методы take/takeWhile приводят к утечкам памяти, если необходимые условия для отмены подписки не соблюдены. Простейший пример — использование filter до, либо switchMap/mergeMap после.
Если нужно корректно отписаться и при этом избежать утечек памяти — то async, unsubscribe и takeUntil (при условии, что тот стоит после всех остальных условий прямо перед подпиской).
+1
Есть-ли способ обнаруживать незакрытые подписки после разрушения компонента, годный для использования в юнит тестах?
+3
Ошибка в 4 листинге в пункте 1. subscription -undefined, а мы пытаемся вызвать метод add. Скорей всего сначала надо сделать:
this.subscription = subcription1$;
this.subscription.add(subscription2$);
+1
Почему subscription — undefined? Он же в свойствах класса объявлен на 5й строке
0
пользуюсь библиотекой — github.com/ngneat/until-destroy
0
Sign up to leave a comment.
6 способов отписаться от Observables в Angular