کافه انگولار
عکس
تفاوت Async pipe در مقابل takeUntilDestroyed
الگوی قدیمیِ
«destroy$ + takeUntil + ngOnDestroy»
برای جلوگیری از memory leak عملاً بازنشسته شده و Angular حالا دو راه استاندارد و مطمئن داره:
1️⃣ استفاده از async pipe:
بهترین انتخاب وقتی دیتا فقط برای نمایش UIه. Angular خودش subscribe میکنه، با هر emit view رو update میکنه، و موقع destroy کامپوننت هم خودکار unsubscribe میکنه. هدفاش اینه که کامپوننت کلاس تا جای ممکن خالی و declarative بمونه.
2️⃣ استفاده از takeUntilDestroyed:
وقتی مجبوریم داخل کلاس subscribe کنیم (مثل Router events، WebSocket، side-effectها).
⚠️ نکته مهم: takeUntilDestroyed() بهصورت پیشفرض باید داخل injection context صدا زده بشه (منظور constructor هست، نه ngOnInit). اگر داخل ngOnInit لازم داریم، باید DestroyRef رو inject کنید و به operator پاس بدید.
🎯 نکته طلاییش چیه؟
اگه فقط میخواین observable تون رو تو template استفاده کنید از async pipe استفاده کنید و اگه میخواین تو logic تون subscribe داشته باشید از takeUntilDestroyed استفاده کنید با رفرنس destroyRef
#observables
@angularcafe
13 · 732 ·