父级ngOnDestroy之后未调用角ngOnChanges

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

我有一个接受输入的子组件

<app-custom [customModel]="customModel"></app-custom>

在子组件中,我通过执行以下操作检测到对customModel输入的更改:

@Input() customModel: CustomModel;

ngOnChanges(changes: SimpleChanges) {
  console.log('changes', changes); // -> does not get called from ngOnDestroy of parent 
}

在我的父组件中,我想在父组件将被销毁时通知子组件

customModel = null;

ngOnDestroy() {
  let obj = new CustomModel();
  obj.state = 0;
  this.customModel = obj;
}

当父级的ngOnDestroy中的输入customModel更改时,不会调用子组件的ngOnChanges。为什么会发生这种情况?

我的孩子中有一个音频元素,即使父级销毁后仍能听到声音。

在其他情况下,当我更改输入而不是通过ngOnDestroy时,将调用ngOnChanges

angular ngoninit ngonchanges angular-lifecycle-hooks ngondestroy
1个回答
0
投票

我认为是因为子组件在其父组件之前被销毁。您可以在两个组件的ngOnDestroy()方法内使用一个简单的日志进行检查。

更新

因此,如果要停止当前运行的音频,只需在子组件被销毁时在其内部进行处理。

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