我是离子新手。
我想将数据推送到myForm数组中,但显示错误无法读取未定义的属性“ push”
这是我的表格:
公共myForm:FormGroup;
constructor(){
this.myForm = this._fb.group({
docs: this._fb.array([
this._fb.group({
docName: [''],
ref_array: this._fb.array([
this._fb.group({
refTextBox: []
})
])
}),
]),
})
}
我想将元素推送到ref_array
这是我的代码:
const control2 = <FormArray>this.myForm.controls['docs']
const control3 = <FormArray>control2.controls['ref_array']
control3.push(
this._fb.group({
refTextBox: []
})
)
我在哪里犯错? 请提前帮助和感谢!
答案 0 :(得分:2)
使用_fb.array
代替普通数组[]
refTextBox: this._fb.array([])
let data = <FormArray>this.myForm.get('docs');
let newdata = <FormArray>data.controls[0].get('ref_array');
newdata.push(this._fb.group({
refTextBox: []
}))
答案 1 :(得分:1)
您必须维护formArray的索引:
参考示例---> DEMO
请参阅演示,它将帮助您了解表单数组
add(index){
const control = <FormArray>this.myForm.get('docs')['controls'][index].get('ref_array');
control.push(
this._fb.group({
refTextBox: []
})
)
}
答案 2 :(得分:0)
可能control2.controls['ref_array']
返回null。
添加条件
if(control3 && control3.length >= 0){
control3.push(
this._fb.group({
refTextBox: []
})
)
}