javascript - 如何检测Angular 9中的变量变化?
问题描述
我需要检测任何变量何时更改值并调用任何函数。现在的功能并不重要,我只需要检测是否有任何值被更改。重要的是我需要检测每一个变化,而不仅仅是在 init 上。
dagAndDropUser: any;
onAdd(e) {
console.log(' add ', e.itemData)
this.dagAndDropUser = e.itemData; // EVERY ADD VARIABLE CHANGE VALUES I NEED TO DETECT IT
e.toData.splice(e.toIndex, 0, e.itemData);
}
解决方案
您可以使用 EventEmitter。例如:
dagAndDropUser: any;
dagAndDropUserValueChanges: EventEmitter<any> = new EventEmitter();
onAdd(e) {
console.log(' add ', e.itemData)
this.dagAndDropUser = e.itemData; // EVERY ADD VARIABLE CHANGE VALUES I NEED TO DETECT IT
e.toData.splice(e.toIndex, 0, e.itemData);
this.dagAndDropUserValueChanges.emit(e.itemData);
}
现在,如果要检测值变化,可以使用:
this.dagAndDropUserValueChanges.subscribe(itemData => {
console.log('Value Changes: ', itemData);
})
确保EventEmitter
从@angular/core
.
更新:如果您遇到一些错误,请确保将 onAdd 方法更改为箭头函数方法,现在您可以使用您的 App 组件的实例。
例如:
onAdd = (e) => {
console.log(' add ', e.itemData)
this.dagAndDropUser = e.itemData; // EVERY ADD VARIABLE CHANGE VALUES I NEED TO DETECT IT
e.toData.splice(e.toIndex, 0, e.itemData);
this.dagAndDropUserValueChanges.emit(e.itemData);
}
之后,您将如您预期的那样得到一些结果(“事件更改”)。
推荐阅读
- javascript - 根据增量道具值更改列表元素的类名 - ReactJS
- angular - angular2-multiselect-dropdown badgeShowLimit 选项不起作用
- docker - Traefik 2.0 - 取决于 PathPrefix 的相同服务的转发身份验证和基本身份验证
- jquery - Jquery Table2Excel 模块:工作,但 Excel 抛出错误
- c# - WPF C# 使用绑定在 DataGrid 中显示 Observable 集合
- c# - WPF MVVM 依赖注入构造函数异常
- python - 拆分多个分配不会产生相同的输出
- javascript - 如何获得此 WooCommerce 预订下拉菜单以显示可用性范围的开始和结束日期?
- sql - 基于xml记录中的属性选择语句作为SQL Server中的varchar
- zpl-ii - 如何使用 ZPL II“B”开关(Zebra 打印机)左对齐旋转 270 度的字符串?