Html文件
<input type = "text" formControlName="catalogItemId">
Ts文件
this.catalog Form = this.fb.group({
catalogItemId:fb.control('').
.
.
so on
})
<mat-list-item *ngFor="let data of attributeMap | keyvalue">
<mat-form-field>
<mat-label>{{data.key}}</mat-label>
<input matInput type="text" value = {{data.value}}
</mat-form-field>
</mat-list-item>
现在的问题是,我如何才能在我的表单组(即this.catalog Form)中获取这些动态值。
我以前没有用过表单生成器,我通过很多文章来澄清这个疑问.希望能得到解决.先谢谢你了。
你可以使用 addControl() 由于你可能只想在模板中循环动态控件,我建议你在表单中创建一个嵌套的表单组,将其与表单中的静态控件隔离开来。
this.catalogForm = this.fb.group({
catalogItemId:fb.control(''),
dynamicControls: this.fb.group({})
});
addDynamicValues() {
for (let key in attributeMap) {
(this.catalogForm.get('dynamicControls') as FormGroup).addControl(key, this.fb.control(attributeMap[key]))
}
}
然后,在模板中,在.NET中,在.NET中,在.NET中,在.NET中,在.NET中,在.NET中,在.NET中,在.NET中,在.NET中,在.NET中,在.NET中,在.NET中,在.NET中,在.NET中,在.NET中,在.NET中,在.NET中,在.NET中,在.NET中,在.NET中,在.NET中,在.NET中,在.NET中,在.NET中,在.NET中,在.NET中,在.NET中,在.NET中,在.NET中,在.NET中,在.NET中,在.NET中,在.NET中,在.NET中,在.NET中,在.NET中,在.NET中,在.NET中,在.NET中。
<form [formGroup]="catalogForm">
<section formGroupName="dynamicControls">
<ng-container *ngFor=let control of catalogForm.get('dynamicControls').controls | keyvalue">
<mat-form-field>
<mat-label>{{control.key}}</mat-label>
<input matInput type="text" [formControlName]="control.key"
</mat-form-field>
</ng-container>
</section>
</form>