为了解决这样的问题:
First of all, I don't understand why Angular 2 requires a name attribute if binding input using [(ngModel)]
一些信息从这里云集:Official docs for Forms:
首先,我们只需要在这个表格。名称属性是将[(ngModel)]
与表单结合使用时的要求。
在内部,Angular创建了FormControl
实例并将它们注册为您的NgForm
指令。 Angular自动将NgForm
指令附加到<form>
标签。 NgForm
指令为表单元素添加了附加功能。它包含您为具有ngModel
指令和name
属性的元素创建的控件,并监视它们的属性,包括它们的有效性。
每个FormControl
都是以您分配给name
属性的名称注册的。因此,这意味着每个名称都必须是唯一的,如果不是,则每个具有相同名称的字段将被评估为一个且相同。
通常情况下,一个循环之外,就足以做到:
<input [(ngModel)]="item.name" name="name">
但内循环,这将是不够的,因为所有的领域将具有相同的name
-attribute。
所以像由爱德华建议,当你循环,这可以很容易地通过使用索引来解决:
<ul *ngFor="let item of items; let i = index">
<input [(ngModel)]="item.name" name="name{{i}}"/>
</ul>
不能使用你迭代什么名字? –
'* ngFor =“let foo of bars; let i = index”'那么你可以使用'i'变量。 – n00dl3