是否有一个指令来检测像 ngOnDestroy() 这样的每个生命周期钩子,并在组件被销毁之前实现一些垃圾收集器?
我想这样做是为了避免组件让某些东西运行并导致内存泄漏
是否有一个指令来检测像 ngOnDestroy() 这样的每个生命周期钩子,并在组件被销毁之前实现一些垃圾收集器?
我想这样做是为了避免组件让某些东西运行并导致内存泄漏
我认为有两种选择
<app-mycomp cleanup></app-mycomp>
1) 指令知道它的宿主组件。所以你可以将主机注入构造函数
...
constructor(private host: MycompComponent) { }
...
2)如果指令不知道主机。这个有点复杂 宿主组件需要自己提供
@Component({
selector: 'app-mycomp',
templateUrl: './mycomp.component.html',
styleUrls: ['./mycomp.component.css'],
providers: [{
provide: 'cleanable',
useExisting: forwardRef(()=> MycompComponent)
}]
})
export class MycompComponent extends Cleanable implements OnInit { ... }
现在您也可以在指令中注入它
constructor(@Inject('cleanable') private host: Cleanable) { ... }
最后,在指令中,您可以定义生命周期挂钩。