4

我在模板驱动的表单中使用 ngFor 添加了几个输入,并且我想在输入无效时添加相应的错误消息。通常,如果我不使用 ngFor,我会使用 #inputName="ngModel"。为了引用动态添加的输入,我有什么办法可以做这样的事情吗?

基本上我想做这样的事情:

<div *ngFor="let field of fields; let i = index">
        <label>{{field.label}}</label> <input [ngModel]="field.value" required #field{{i}}="ngModel" />
        <div *ngIf="field{{i}}.invalid"> This field is required </div>
</div>
4

2 回答 2

7

garth74 的回答几乎是正确的。在表单中,name属性必须是唯一的,以便在您的情况下,每个输入字段都被识别为单独的表单控件。所以这里使用索引来分配唯一名称:

name="f{{i}}"

...因此您的代码将如下所示:

<div *ngFor="let field of fields; let i = index">
  <label>{{field.label}}</label> <input name="f{{i}}" [ngModel]="field.value" required #f="ngModel" />
  <div *ngIf="f.invalid"> This field is required </div>
</div>

这是一个

演示

于 2017-03-29T05:22:33.203 回答
1

您不需要做任何特殊的事情来引用模板中的该字段 - 只需直接使用别名(例如'f')

  <div *ngFor="let field of fields; let i = index">
    <label>{{field.label}}</label> <input [ngModel]="field.value" required #f="ngModel" />
    <div *ngIf="f.invalid"> This field is required </div>
  </div>
于 2017-03-29T03:27:09.103 回答