Angular 组件究竟什么时候被销毁?

Angular 组件究竟什么时候被销毁?,angular,components,parent-child,ondestroy,Angular,Components,Parent Child,Ondestroy,在Angular 2和提前编译(AOT)中,我有一个父组件和一个子组件,如下所示: <div> <h1>I am a parent</h1> <myChild *ngIf="showChild"></myChild> </div> 我是一位家长 我知道子模板是动态插入DOM的 如果showChild的计算结果为false,则Angular究竟何时销毁子组件?还是会破坏子组件?是不是时间角度调用了onde

在Angular 2和提前编译(AOT)中,我有一个父组件和一个子组件,如下所示:

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

我是一位家长
我知道子模板是动态插入DOM的


如果
showChild
的计算结果为
false
,则Angular究竟何时销毁子组件?还是会破坏子组件?是不是时间角度调用了
ondestory()
方法

当Angular runs change detection和
ngIf
指令的
ngIf
输入绑定更新时,
ngIf
从DOM中删除组件。从DOM中删除组件后,将调用
ngDestroy()
,然后该组件可以自由地进行垃圾收集


如果在
*ngIf
表达式为true时删除父组件,则父组件和子组件将一起销毁。我不知道先调用什么
ngDestroy()

如果子组件被销毁,angular如何处理内存占用?假设onDestroy()中有取消订阅和分离的事件,那么垃圾收集会有多干净?Angular与垃圾收集无关。如果没有对组件的引用,那么JSVM将收集所有相关类。Angular确保在组件被销毁后,它不会保存对组件本身的任何引用。@GünterZöchbauer Is Ngondestory保证被调用?@RoyiNamir Angular删除组件或服务时,如果您只是关闭选项卡,那么Angular将不会进行任何清理,也不会被调用。另请参见如何在关闭选项卡时执行一些自定义清理。