0

是否有一个指令来检测像 ngOnDestroy() 这样的每个生命周期钩子,并在组件被销毁之前实现一些垃圾收集器?

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

4

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

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

这是一个堆栈闪电战

于 2019-09-26T17:07:51.240 回答