2017-08-11 56 views
3

您可能都知道,您需要取消訂閱觀察器以防止內存泄漏@Component的角度@Unsubscribe裝飾器

我不明白爲什麼不只是創造@Uncsubscribe裝飾商在您使用觀測量組件類,它會經過的所有屬性和退訂都在破壞預訂。

或甚至更多的糖:擴展@組件修飾器添加這樣的行爲。

現在問題:這個解決方案的缺陷是什麼?

+0

_why不只是創建@Uncsubscribe裝飾器_ - 如何?你可以表演嗎? –

回答

1

實際上,有一篇關於this的好文章。

這裏的概述

@AutoUnsubscribe(["one$", "two$"]) 
class TestComponent { 
    ... 
} 

其中一個$和兩個$是你的觀測,它會自動退訂在NgOnDestroy

如果您正在使用AOT,請確保您在添加NgOnDestroy您零件。請參閱this

+0

如果我們沒有直接聲明它,你確定angular會在aot編譯中運行'ngOnDestroy'方法嗎? AOT對我們來說一直是個問題。那麼有一個'takeUntil'和這樣的實現有什麼區別。在這兩種情況下,我們必須在組件 – yurzui

+0

@yurzui上聲明'ngOnDestroy'鉤子,謝謝你指出。我收回這個實現沒有缺陷。使用AOT可能是此實現的問題。我會進一步調查這個 – brijmcq

+1

這裏是它被檢查的地方https://github.com/angular/angular/blob/master/packages/compiler/src/aot/static_reflector.ts#L255-L268 – yurzui