web-dev-qa-db-ja.com

コンポーネントはいつ正確に破壊されますか?

Angular 2 Ahead-of-Time(AOT)コンパイルで、次のように、親コンポーネントと子コンポーネントがあります。

_<div>
    <h1>I am a parent</h1>
    <myChild *ngIf="showChild"></myChild>
</div>
_

子テンプレートがDOMに動的に挿入されることを知っています。

showChildfalseと評価される場合、正確にAngular子コンポーネントを破棄しますか?またはAngular子を破棄しますコンポーネントはどうですか?Angular=はonDestroy()メソッドを呼び出しますか?

13
gye

Angularが変更検出を実行し、ngIfディレクティブのNgIf入力へのバインディングが更新されると、NgIfはDOMからコンポーネントを削除します。コンポーネントがDOMから削除された後、ngDestroy()が呼び出され、コンポーネントはガベージコレクションを自由に取得できます。

_*ngIf_式がtrueのときに親コンポーネントが削除されると、親と子が一緒に破棄されます。 ngDestory()が最初に呼ばれるものがわかりません。

12