En Angular 2 con compilación Ahead-of-Time (AOT), tengo un componente principal y un componente secundario, como este:
<div> <h1>I am a parent</h1> <myChild *ngIf="showChild"></myChild> </div>Sé que la plantilla secundaria se inserta dinámicamente en el DOM.
Si showChild se evalúa como false , ¿cuándo exactamente destruye Angular el componente secundario? ¿O Angular destruirá el componente secundario? ¿Es ese el momento en que Angular invoca el método onDestroy() ?
Cuando Angular ejecuta la detección de cambios y se actualiza el enlace a la entrada ngIf de la directiva NgIf , NgIf elimina el componente del DOM. Después de que el componente se elimina del DOM, se llama a ngDestroy() y luego el componente está libre para recolectar basura.
Si se elimina el componente principal mientras la expresión *ngIf es verdadera, el principal y el secundario se destruirán juntos. Sin embargo, no sé cómo se llama ngDestroy() primero.