html - 对象数组的表单控件
问题描述
{
id: 123,
email: "abc@gmail.com",
password: 108,
myObj:[
{ id:1, name:"abc", age: 20 },
{ id:2, name:"def", age: 21 },
{ id:3, name:"ghi", age: 22 },
{ id:4, name:"jkl", age: 23 } ]
}
这就是我从服务器获取字段以进行修补的方式,我正在像这样修补它们:
this.myForm = this.fb.group({
id: [],
email: [],
password: [],
myObj: []
});
而且我需要每个myObj
Array 成为一个单独的表单控件。我尝试以不同的方式从 HTML 访问它们,(如formControlName = myObj[0]
, formControlName = myObj.name
)但没有成功..
如何访问myObj
HTML 中的字段?
解决方案
它应该是这样的:
objects: any[] = [];
myObj:[
{ id:1, name:"abc", age: 20 },
{ id:2, name:"def", age: 21 },
{ id:3, name:"ghi", age: 22 },
{ id:4, name:"jkl", age: 23 } ]
ngOnInit() {
this.myForm = this.fb.group({
id: [],
email: [],
password: [],
objects: this.formBuilder.array([])
});
this.objects = this.myForm.get('objects') as FormArray;
for(let obj of this.myOj){
this.objects.push(this.createItem());
}
}
createItem(): FormGroup {
return this.formBuilder.group({
id: '',
name: '',
age: ''
});
}
在模板中:
<div formArrayName="objects"
*ngFor="let item of myForm.get('objects').controls; let i = index;">
<div [formGroupName]="i">
<input formControlName="id">
<input formControlName="name">
<input formControlName="age">
</div>
</div>
推荐阅读
- java - 带有自定义适配器的 Android AutoCompleteTextView
- sap - HANA Where 过滤器使用 EXTRACT YEAR
- javascript - 数据表列错误
- javascript - 在 Angular 中使用 Jasmine 使用 *ngIf 指令时,如何对元素是否可见进行单元测试
- python-3.x - 即使正确设置了pythonpath,Python Assertion 错误
- javascript - 在 node.js 中使用Sharp压缩图像
- r - 将在匹配字符中找到的字符串移动到 R 中的新列
- json - JSON 下载将“双引号”更改为“单引号”
- postgresql - 橙色数据挖掘 SQL 表连接错误 - 不支持扩展“分位数”
- ios - 失败后 AVPlayer 不会播放新的 AVPlayerItem