如何根据不断变化的值列表动态创建表单
How to create a form dynamically based on a list of ever changing values
我正在从后端获取一个对象列表,其中的显示名称和显示值会根据不同的请求而变化。我可以使用简单的 *ngFor ... {{object.displayName)): {{object.value}}...
但是我需要把这个页面做成一个表格。
所以我的问题是如何创建 x 个 FormControls,每个 FormControls 的值都是 {{object.displayName}} ?然后使用上面的 for 循环将 displayName 与 FormControl 匹配。
我看过使用 FormArray 但无法动态创建
您需要创建一个空的 FormArray,然后从后端迭代数据并推送 FormCntrols。
form: FormGroup;
dataFromBackend: [];
constructor(private formBuilder: FormBuilder) { }
this.form = this.formBuilder.group({
array: this.formBuilder.array([
])
});
ngOnInit() {
const control = <FormArray>this.form.get('array');
for (const item of dataFromBackend) {
control.push(new FormControl(item));
}
}
编辑
添加HTML
<form [formGroup]="form">
<table>
<thead>
<th>Name</th>
<th>Value</th>
</thead>
<ng-container formArrayName="ponderacionFactor">
<tbody *ngFor="let item of form.get('array')['controls']; let i = index" [formGroupName]="i">
<td>{{item.name}}</td>
<td>{{item.value}}</td>
</tbody>
</ng-container>
</table>
</form>
我正在从后端获取一个对象列表,其中的显示名称和显示值会根据不同的请求而变化。我可以使用简单的 *ngFor ... {{object.displayName)): {{object.value}}... 但是我需要把这个页面做成一个表格。 所以我的问题是如何创建 x 个 FormControls,每个 FormControls 的值都是 {{object.displayName}} ?然后使用上面的 for 循环将 displayName 与 FormControl 匹配。 我看过使用 FormArray 但无法动态创建
您需要创建一个空的 FormArray,然后从后端迭代数据并推送 FormCntrols。
form: FormGroup;
dataFromBackend: [];
constructor(private formBuilder: FormBuilder) { }
this.form = this.formBuilder.group({
array: this.formBuilder.array([
])
});
ngOnInit() {
const control = <FormArray>this.form.get('array');
for (const item of dataFromBackend) {
control.push(new FormControl(item));
}
}
编辑
添加HTML
<form [formGroup]="form">
<table>
<thead>
<th>Name</th>
<th>Value</th>
</thead>
<ng-container formArrayName="ponderacionFactor">
<tbody *ngFor="let item of form.get('array')['controls']; let i = index" [formGroupName]="i">
<td>{{item.name}}</td>
<td>{{item.value}}</td>
</tbody>
</ng-container>
</table>
</form>