如何在 ngFor 中引用控件?
How can I reference control added in ngFor?
我正在使用 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>
您无需执行任何特殊操作即可在模板中引用该字段 - 只需直接使用别名(例如 '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>
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>
这是一个
DEMO
我正在使用 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>
您无需执行任何特殊操作即可在模板中引用该字段 - 只需直接使用别名(例如 '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>
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>
这是一个