gpt4 book ai didi

javascript - 具有动态字段的 Angular 响应式(Reactive)表单

转载 作者:行者123 更新时间:2023-12-05 00:28:12 24 4
gpt4 key购买 nike

我目前正在与 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>

但是如果需要该字段,我似乎无法控制每个字段的错误以显示验证消息。

任何人都可以帮我解决这个问题吗?
也许有更好的方法来做到这一点。

最佳答案

好吧,我觉得直接使用formControl的构造函数更舒服和 formGroup

fields=[{id:'one',label : 'one',value:1},{id:'two',label : 'two',value:2}]
form=new FormGroup({})
ngOnInit()
{
this.fields.forEach(x=>{
this.form.addControl(x.id,new FormControl(x.value,Validators.Required))
})
}

<form [formGroup]="form">
<div *ngFor="let field of fields">
<input [formControlName]="field.id">
<div class="error" *ngIf="form.get(field.id).touched &&
form.get(field.id).invalid">Required</div>
</div>
</form>
{{form?.value|json}}
但是你可以在输入中直接使用[formControl]
<form [formGroup]="form">
<div *ngFor="let field of fields">
<label>{{field.label}}</label>
<input [formControl]="form.get(field.id)">
<div class="error" *ngIf="form.get(field.id).touched &&
form.get(field.id).invalid">Required</div>
</div>
</form>
甚至,您可以遍历 form.controls|keyvalue
<form [formGroup]="form">
<div *ngFor="let control of form.controls |keyvalue;let i=index">
<label>{{fields[i].label}}</label>
<input [formControl]="control.value">
<div class="error" *ngIf="control.value.touched &&
control.value.invalid">Required</div>
</div>
</form>
stackblitz

关于javascript - 具有动态字段的 Angular 响应式(Reactive)表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59935560/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com