gpt4 book ai didi

javascript - Angular : set reactive form with dynamic looping inputs

转载 作者:行者123 更新时间:2023-11-30 06:10:39 25 4
gpt4 key购买 nike

我必须为使用数据循环进行输入的表单设置响应式(Reactive)表单验证:

我的表单生成器看起来像这样:

constructor(private formBuilder: FormBuilder) { 
this.userForm = this.formBuilder.group({
'inputOne': ['', [Validators.required]],
'inputOne': ['', [Validators.required]],
...
'inputN': ['', [Validators.required]]
});
}

我的模板看起来像这样:

<form [formGroup]="userForm">
<div class="form-group" *ngFor="let item of items; let i=index;">
<label for="lastName">{{item.name}}</label>
<input class="form-control" name="lastName" id="lastName" type="text" [formControlName]="item.name">
</div>
</form>

从我的后端动态加载项目

如何在 Angular 响应式表单中动态填充控件?

最佳答案

听起来你想要一个表单数组,而不是一个组......

  constructor(private formBuilder: FormBuilder) { 
// build an empty form array
this.userForm = this.formBuilder.array([]);
}

// call this whenever you need to add an item to your array
private addItem(item) {
// build your control with whatever validators / value
const fc = this.formBuilder.control(i.lastName, [Validators.required]);
this.userForm.push(fc); // push the control to the form
}

// call this function whenever you need to reset your array
private resetFormArray(items) {
this.userForm.clear(); // clear the array
items.forEach(i => this.addItem(i)); // add the items
}

<form [formGroup]="userForm">
<div class="form-group" *ngFor="let item of items; let i=index;">
<label for="lastName">{{item.name}}</label>
<input class="form-control" name="lastName" id="lastName" type="text" [formControlName]="i">
</div>
</form>

请注意,您在这里使用的是表单控件名称的索引

关于javascript - Angular : set reactive form with dynamic looping inputs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59034980/

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