Я использую BehaviorSubject и подписываюсь на него с помощью асинхронного канала. Нужно ли мне завершать BehaviorSubject при уничтожении компонента? * Я не подписываюсь на это в файле .ts





Если вы получаете доступ к теме поведения с помощью асинхронного канала, в этом случае вам не нужно вручную отменять подписку на эту тему в вашем файле .ts, angular автоматически отпишется для вас, когда определенный компонент будет уничтожен.
Однако, если вы вручную подписываете тему в файл .ts вашего компонента, только в этом случае вам придется вручную отписаться от хука жизненного цикла вашего компонента ngOnDestroy(), чтобы избежать ошибок утечки памяти.
Надеюсь, ты получишь ответ, Спасибо!
complete() делает 2 вещи:
Поэтому, если вы используете только BehaviorSubject в своем компоненте и используете его только через канал async, который автоматически управляет своими базовыми подписками (запускает подписку, как только ее шаблон выполняется, останавливает подписку, когда компонент вот-вот будет уничтожен), Вам не нужно звонить complete().
Однако, если этот BehaviorSubject существует в общей службе и/или используется несколькими подписчиками, вызов complete() может быть либо ошибкой, поскольку вы выполните его для всех подписчиков, а не только для своего компонента. Или, в зависимости от ваших потребностей, это может понадобиться, если вы действительно хотите полностью очистить BehaviorSubject.
Подводя итог, думаю, имеет смысл
complete(), где Тема поделилась, или вы заботитесь о событии завершения, ивы можете использовать complete() в ngOnDestroy()
ngOnDestroy() {
this.subject.complete();
}
Async pipe автоматически отпишется, Подробнее об этом можно прочитать здесь: angular.io/api/common/AsyncPipe#description