angular - 在父级的 ngOnDestroy 之后未调用 Angular ngOnChanges
问题描述
我有一个接受输入的子组件
<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() 方法中的简单日志来检查这一点。
更新
因此,如果您想停止当前正在运行的音频,只需在子组件被销毁时执行它。
推荐阅读
- php - 如何在 php 中为 Wordpress 查询多个 SQL 任务?
- git - Git 日志 - 在不相关的历史记录之间添加分隔符,尤其是 --oneline
- angular - 如何修复角度获取请求中的“确定”消息
- jsp - 我们想为 JSP 页面的 i18n 使用 JSTL FMT 标签,但将语言代码文件夹保留在 url 中以用于 SEO 目的
- mysql - 如何快速在 MySQL 中的多个列中进行全文搜索?
- regex - 在 powershell 脚本中使用正则表达式替换键/值标签的值
- excel - 根据另一列中的值提取唯一值以分隔工作表
- c - 编译器不正确的注册表 %rax C 代码问题
- java - 重新安装 Windows 后出现 Cordova 错误
- reactjs - 如何创建 ReactJS 可缩放图像灯箱