Это сделано довольно просто.Вам нужно описать Subject
и назвать его в ngOnDestroy
жизненном цикле.Также вы должны использовать takeUntil
трубу на наблюдаемой с предоставленной Subject
.
destroy$ = new Subject<void>();
ngOnInit(): void {
this.service.observable$.pipe(
takeUntil(this.destroy$)
).subscribe();
}
ngOnDestroy(): void {
this.destroy$.next();
this.destroy$.complete();
}
. Этот метод лучше использовать, когда наблюдаемое излучает значение более одного раза.
Например, если выиспользуйте this.router.events.subscribe
, это вызовет события, даже если компонент был уничтожен, если вы не используете подход, показанный выше.