Javascript 如何在嵌套数组中进行双向数据绑定

Javascript 如何在嵌套数组中进行双向数据绑定,javascript,angular,typescript,Javascript,Angular,Typescript,假设您有一个任务列表,其中又有一个子任务列表,并且您希望子任务是可更改的-为什么angular不能正确地双向绑定子任务的数据 HTML <div *ngFor="let task of tasks"> Task value: <input [(ngModel)]="task.value"> <br> <div *ngFor="let subtask of task.subtasks"> Subtask: <input [(

假设您有一个任务列表,其中又有一个子任务列表,并且您希望子任务是可更改的-为什么angular不能正确地双向绑定子任务的数据

HTML

<div *ngFor="let task of tasks">
  Task value: <input [(ngModel)]="task.value">
  <br>
  <div *ngFor="let subtask of task.subtasks">
    Subtask: <input [(ngModel)]="subtask">
    </div>
</div>

{{ tasks | json }}

这里的问题是NGF,因为每个输入都必须有一个唯一的名称。要解决这个问题,

使用
任务。子任务[索引]
而不是带有ngModel的项

此外,您还需要使用trackByIndex以避免每次更改数组中的字符串时重新创建DOM时的缓慢

<div *ngFor="let subtask of task.subtasks;let index = index;trackBy:trackByIndex;">
    Subtask: <input [(ngModel)]="task.subtasks[index]">
</div>

子任务:

您需要访问与此代码段类似的子列表索引

在列表中添加索引计数器,并通过tas.子列表[i]访问

   <div *ngFor="let task of tasks">
      Task value: <input [(ngModel)]="task.value">
    <br>
    <div *ngFor="let subtask of task.subtasks; let i = index">
      Subtask: <input [(ngModel)]="task.subtasks[i]">

   </div>
 </div>

{{ tasks | json }}

任务值:

子任务: {{tasks}json}
   <div *ngFor="let task of tasks">
      Task value: <input [(ngModel)]="task.value">
    <br>
    <div *ngFor="let subtask of task.subtasks; let i = index">
      Subtask: <input [(ngModel)]="task.subtasks[i]">

   </div>
 </div>

{{ tasks | json }}