创建一个指令以监视角度生命周期挂钩

时间:2019-09-26 15:26:22

标签: angular directive spy angular-lifecycle-hooks

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

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

1 个答案:

答案 0 :(得分: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