创建用于监视角寿命周期挂钩的指令

问题描述 投票:0回答:1

反正是否有一条指令来检测每个生命周期挂钩,例如ngOnDestroy()并在销毁组件之前实现一些垃圾回收器?

我想这样做是为了避免组件运行某些东西并导致内存泄漏

angular directive spy angular-lifecycle-hooks
1个回答
0
投票

我认为有两个选择

<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) { ... }

最后,可以在指令中定义生命周期挂钩。

Here is a stackblitz

© www.soinside.com 2019 - 2024. All rights reserved.