Angular 在父级的 ngOnDestroy 之后未调用 ngOnChanges
Angular ngOnChanges not called after ngOnDestroy of parent
我有一个接受输入的子组件
<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不会被调用。为什么会这样?
我的子元素中有一个音频元素,即使在父元素被销毁后仍然可以听到音频。
在其他情况下,当我更改输入时会调用 ngOnChanges,但不会通过 ngOnDestroy
我认为是因为子组件在其父组件之前被销毁。
您可以在两个组件的 ngOnDestroy() 方法中使用一个简单的日志来检查这一点。
更新
因此,如果您想停止当前 运行 音频,只需在子组件被销毁时在其内部执行即可。
我有一个接受输入的子组件
<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不会被调用。为什么会这样?
我的子元素中有一个音频元素,即使在父元素被销毁后仍然可以听到音频。
在其他情况下,当我更改输入时会调用 ngOnChanges,但不会通过 ngOnDestroy
我认为是因为子组件在其父组件之前被销毁。 您可以在两个组件的 ngOnDestroy() 方法中使用一个简单的日志来检查这一点。
更新
因此,如果您想停止当前 运行 音频,只需在子组件被销毁时在其内部执行即可。