Angular 在ngForm中动态绑定名称属性?
需要使用ngFor动态绑定name属性Angular 在ngForm中动态绑定名称属性?,angular,angular-forms,Angular,Angular Forms,需要使用ngFor动态绑定name属性 <tr *ngFor="let subject of subjectSet1; let i = index"> <td> <div class="form-check"> <label class="form-check-label">
<tr *ngFor="let subject of subjectSet1; let i = index">
<td>
<div class="form-check">
<label class="form-check-label">
<input class="form-check-input" type="checkbox" [name]="i" ngModel checked />
<span class="form-check-sign"></span>
</label>
</div>
</td>
<td class="text-left">
<input type="text" [name]="i" [value]="subject" class="form-control" placeholder="Username" ngModel disabled/>
</td>
</tr>
但这给了我这个错误信息
ERROR Error: If ngModel is used within a form tag, either the name attribute must be set or the form
control must be defined as 'standalone' in ngModelOptions.
Example 1: <input [(ngModel)]="person.firstName" name="first">
Example 2: <input [(ngModel)]="person.firstName" [ngModelOptions]="{standalone: true}">
ERROR错误:如果在表单标记中使用ngModel,则必须设置name属性或表单
控件必须在ngModelOptions中定义为“独立”。
例1:
例2:
如何解决这个问题?有3种方法可以将
name
属性绑定到值
[name]=“我”
就像你那样[attr.name]=“i”
通过这种方式,您可以将任何元素的任何属性绑定到您的值name=“{{i}}”
错误
错误:如果表单标记中使用了ngModel,则必须在ngModelOptions中设置name属性或将表单控件定义为“standalone”。
非常清楚,这意味着如果表单控件中不存在name属性,则应使用显式的[ngModelOptions]=“standalone”
因此angular可以将此控件从表单验证中排除。这是否回答了您的问题?他提到了class属性,所以应该足够了。我试图重现stackblitz中的错误,但(1)我得到了一个错误,number无法分配给string
原因I
是一个数字,并且分配给需要字符串的name
属性。(2)如果我解决了这个问题,它会像预期的那样工作……不,我需要将值i分配给name属性