Angular 在ngForm中动态绑定名称属性?

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">

需要使用ngFor动态绑定name属性

<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属性