web-dev-qa-db-fra.com

Quand exactement le composant est-il détruit?

Dans Angular 2 avec compilation Ahead-of-Time (AOT), j'ai un composant parent et un composant enfant, comme ceci:

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

Je sais que le modèle enfant est inséré dynamiquement dans le DOM.

Si showChild est évalué en false, quand exactement Angular détruit le composant enfant? Ou Angular détruit-il l'enfant) Est-ce le moment Angular invoque la méthode onDestroy()?

13
gye

Lorsque Angular exécute la détection des modifications et que la liaison à l'entrée ngIf de la directive NgIf est mise à jour, NgIf supprime le composant du DOM Une fois le composant supprimé du DOM, ngDestroy() est appelée, puis le composant est libre de récupérer les ordures.

Si le composant parent est supprimé alors que l'expression *ngIf Est vraie, le parent et l'enfant seront détruits ensemble. Je ne sais pas comment ngDestory() est appelé en premier.

12