angular - *ngFor 如何使用索引将数组中的每个项目绑定(bind)到 ngModel

标签 angular ngfor

===最终更新==

http://plnkr.co/edit/WKRBB7?p=preview

因为我在表单中使用 ngModel,所以我必须添加 name 属性。

我的错误是我使用了与其名称相同的值。

<form #myform="ngForm">
    <table>
      <tr *ngFor="let staff of staffs">
         <td><input name="name" [(ngModel)]="staff.name">{{staff.name}}</td>
      </tr>
    </table>
</form>

我改成下面的后,我的问题就解决了。

<form #my2form="ngForm">
   <table>
      <tr *ngFor="let staff of staffs;let i = index">
         <td><input name="staff.{{i}}.name" [(ngModel)]="staff.name">{{staff.name}}</td>
      </tr>
    </table>
</form>

==========

抱歉,我不记得为什么我使用 names[$index].Name 而不是 x.Name。

也许几年前我在使用 x.Name 时遇到了一些错误,然后养成了使用索引的习惯。

---已更新-----

我需要一个内联编辑表,双向绑定(bind)。

<table>
   <tr *ngFor="let x of names">
     <td><input [(ngModel)]="x.Name">{{x.Name}}</td>
   </tr>
</table>

let names = [
{ Name:'jim'},
{ Name:'tom'}
];

最初页面显示:

blank text field; jim

blank text field; tom

在第一个文本字段中输入“aaaaaa”后,它变成:

aaaaaa; aaaaaa

blank text field; tom

我认为该页面最初会显示:

jim; jim
tom; tom

所以,我的问题是,为什么缺少初始值?

最佳答案

应该是[ngModel]="..."

<table>
   <tr *ngFor="let x of names;let i = index;">
     <td>{{ i+ 1 }}</td>
     <td><input [(ngModel)]="names[i].Name">{{x.Name}}</td>
   </tr>
</table>

关于angular - *ngFor 如何使用索引将数组中的每个项目绑定(bind)到 ngModel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41652487/

相关文章:

angular - 将 Spring boot 服务器和 Angular CLI 应用程序集成到单个可执行文件中

angular - take(1) 和 unsubscribe 的区别

firebase - AngularFire2 在数组中嵌套 *ngFor 数组...但 Firebase 没有数组...?

javascript - 如何从子数组中选择特定的一个

javascript - ngFor 之后的 Angular 2 火灾事件

angular - 如果我使用 ngOnInit 方法而不实现 OnInit 接口(interface)会发生什么

html - 如何摆脱图像周围的方形边框?

angular - 进行深度复制还是不进行深度复制-无论如何,为什么ngrx的状态应该是不可变的?

javascript - 如何使用 ngfor 循环显示数组中的每个组件

arrays - Angular 4 ngFor 使用 HTML 遍历对象数组