首页 > 解决方案 > ngModel在角度的for循环中不起作用

问题描述

我正在开发一个应用程序,我正在尝试在 for 循环中执行 for 循环,for 循环将有一个输入字段,当我编辑其中一个输入字段时,它将更新数组中的值,但我的问题是它更新整个值而不是索引中的值,这里是数组

newSatas=[{"name":"","freeKG":"","CPMPK":""},{"name":"","freeKG":"","CPMPK":""}{"name":"","freeKG":"","CPMPK":""}]

这是for循环

<div *ngFor="let newSata of newSatas; let i=index; trackBy:trackByIndex;">
    <label>Delivery Name 
        <input type="text" [(ngModel)]="newSatas[i].name" name="name[{{i}}]" class="form-control" placeholder="Site Name">
    </label>
    <label>Price Per KiloMeter Per Kg
        <input type="text" [(ngModel)]="newSatas[i].CPMPK" name="CPMPK[{{i}}]" class="form-control" placeholder="Price Per KiloMeter Per Kg">
    </label>
    <label>Free KG
        <input type="text" [(ngModel)]="newSatas[i].freeKG" name="freeKG[{{i}}]" class="form-control" placeholder="Free KG">
    </label>
</div>

请问我怎样才能只更新索引中的值而不是整个值

标签: angularngfor

解决方案


你是如何创建数组的?这很可能是同一个对象。

我相信你会这样做:

sata = {"name":"","freeKG":"","CPMPK":""}
newSatas = [];
for(let i = 0; i < 3; i++) newSatas.push(sata);

每次迭代都需要创建一个新对象

newSatas = [];
for(let i = 0; i < 3; i++) newSatas.push({"name":"","freeKG":"","CPMPK":""});

推荐阅读