我正在调用一个函数来复制* ngFor循环中的数据,如下所示。
<li (click)="replicateTicket(data);"> Replicate</li>
在函数内部,我更新了变量的名称和ID,并将其推入数组中。 (在给出的例子中,我没有推动数据更生动地解释行为。
replicateTicket(data:any){
data.name = data.name + ' (Replicated)';
console.log(this.ticketList[this.ticketList.length-1].id);
data.id = 0;
console.log(this.ticketList[this.ticketList.length-1].id);
}
我想要的是如果原始数据的id是5而不是它不应该变为0。
运行plunker
点击458 abc。
它应该只更新新数据而不是当前数据。
我做错了吗?
答案 0 :(得分:5)
您需要创建当前对象的副本,更改它然后将新对象推送到数组中,例如:(我使用了Plunker中的代码)
replicateTicket(ticket:any){
let t = JSON.parse(JSON.stringify(ticket));
t.name += ' (Replicated)';
t.id = 0;
this.ticketList.push(t);
}
答案 1 :(得分:0)
你也可以这样做
replicateTicket(ticket:any){
let a = Object.assign({}, ticket);
a.name = ticket.name + ' (Replicated)';
a.id = 0;
this.ticketList.push(a);
}