Проверяет знание способов автоматической отписки от RxJS-подписок в Angular без использования ngOnDestroy, что важно для предотвращения утечек памяти.
В Angular подписки на Observable без отписки приводят к утечкам памяти, поэтому важно управлять их жизненным циклом. Классический подход через ngOnDestroy и массив подписок работает, но есть более элегантные способы, не требующие явного хука.
import { Component, inject, DestroyRef } from '@angular/core';
import { Subject, takeUntil } from 'rxjs';
@Component({ selector: 'app-demo', template: '' })
export class DemoComponent {
private destroyRef = inject(DestroyRef);
private destroy$ = new Subject<void>();
constructor(private service: DataService) {
this.destroyRef.onDestroy(() => this.destroy$.next());
this.service.data$.pipe(takeUntil(this.destroy$)).subscribe(d => console.log(d));
}
}@Component({
selector: 'app-list',
template: `<div *ngFor="let item of items$ | async">{{ item }}</div>`
})
export class ListComponent {
items$ = this.service.getItems();
constructor(private service: DataService) {}
}Async pipe не только управляет подпиской, но и автоматически вызывает markForCheck при новых значениях, что упрощает работу с OnPush-стратегией.
Итог: используйте async pipe как основной инструмент, а takeUntil с DestroyRef — для сложных сценариев, чтобы избежать ручного управления подписками и утечек памяти.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию