html - 角度 ngModel 绑定无法正常工作
问题描述
我的班级有 2 个列表,我有一个函数,它从第一个数组中获取一个元素并将其推送到第二个数组。我的问题是,如果我更改第二个数组的元素,第一个数组中的相同元素会被更改,我尝试了onchange 函数和 [(ngModel)]
<div >
<p>{{item.name}}</p>
<p [hidden]="true" id={{item.name}} >
<input type="text" (change)=t($event,item.id) >
</p>
</div>
t(event,id:number)
{
console.log(event.target.value);
this.nodes2.find(a=>a.id===id).name=event.target.value;
}
//use this for pushing item
droppp(ev) {
ev.preventDefault();
//console.log(this.dragedElement)
var nodtmp:ExampleFlatNode[];
nodtmp=this.nodes2;
nodtmp.push(this.dragedElement);
this.nodes2=nodtmp;
}
解决方案
改变拖动对象属性值的问题与 ngModel 无关,也与 onChange 事件无关。问题是因为您不复制对象本身,而只是复制它的引用。在 drop 函数中不要推送对象,而是将其更改为应该创建已删除对象的副本的this.dragedElement
外观。nodtmp.push({...this.dragedElement})
如果您需要更深层次的对象副本,请使用lodash
带deepClone
函数的库。
推荐阅读
- sql - 无法在 Apex Oracle SQL/PL PLS-00103 中编译我的触发器
- git - Git是否更改了“!” .gitignore 的前缀行为?
- typescript - Electron TypeScript Parcel 第二个 BrowserWindow
- python - Python中列值的累积和循环重置每年特定月份的值
- c# - 如何选择列表框中的项目,以便列表框呈现所选项目的子数组
- php - 合并描述和附加信息。边框未延伸到内容
- python - 如何从文本文件中读取数据库凭据?
- android - 使用 android:configChanges="orientation|screenSize"/> 并且它在方向更改时弄乱了我的横向布局
- typescript - 如何隐藏函数参数缺失类型通知?
- html - 如何允许用户使用键盘选项卡并选择带有可见标签的不可见复选框?