【发布时间】:2020-05-13 02:09:24
【问题描述】:
我目前正在与 Angular 表单数组作斗争。
我有一个动态添加字段的表单。
我已经创建了表单对象:
this.otherDataForm = this.fb.group({
});
我像这样添加动态字段:
addField(field: CustomFormField): void {
this.otherDataForm.addControl(id_campo, new FormControl('', Validators.required));
}
我遍历这些字段:
<form *ngIf="selectedProfile" [formGroup]="otherDataForm">
<div class="mb-3" *ngFor="let field of fields; let i = index">
<label>{{field.descripcion}}</label>
<input class="form-control" [formControlName]="field.id_campo" type="number">
</div>
</form>
但如果需要该字段,我似乎无法控制每个字段的错误以显示验证消息。
有人可以帮我解决这个问题吗? 也许有更好的方法来做到这一点。
【问题讨论】:
-
[formControlName]="field.id_campo"动态如何? -
id_campo是什么,设置在哪里,请创建一个堆栈闪电战以便更好地帮助您 -
认为一个formGroup只是一组FormControls。要访问 formGroup 的 formControl,您可以使用 nameOfForm.get('nameOfField'),因此您可以使用
otherDataForm.get(field.id_campo)来获取 formControl,因此otherDataForm.get(field.id_campo).valid给您是否有效,otherDataForm.get(field.id_campo).errors给您错误.. . 即使你可以在你的输入中使用<input class="form-control" [formControl]="otherDataForm.get(field.id_campo)" type="number"> -
@Eliseo 我试过了,但这不起作用,似乎 ngfor 与表单分开工作。
-
@NicholasK 好吧,至少将属性“field.id_campo”附加为每个字段的名称。
标签: javascript angular forms formarray formgroups