如何将初始值设置为Ionic 2中的FormArray控件?
问题描述:
我想将一个初始值添加到FormArray控件。我正在使用此代码:如何将初始值设置为Ionic 2中的FormArray控件?
if(this.navParams.get('kids').length > 1) {
for(let i=0; i<this.navParams.get('kids').length - 1; i++) {
this.addChild();
}
for(let i=0; i<this.navParams.get('kids').length; i++) {
this.registrationForm.controls['child'][i]['child_first_name'].setValue("asdasdasd");
}
}
但是,我想我错误地使用了setValue方法。 我有此错误:
这里是的addChild代码:
addChild() {
// add child to the list
const control = <FormArray>this.registrationForm.controls['child'];
control.push(this.initChild());
// console.log(this.registrationForm.value);
}
这里是initChild方法:
initChild() {
// initialize child form
return this.formBuilder.group({
child_first_name: ['', Validators.compose([Validators.maxLength(255), Validators.required])],
child_last_name: ['', Validators.compose([Validators.maxLength(255), Validators.required])],
child_gender: ['', Validators.compose([Validators.required])],
child_bdate: ['', Validators.compose([Validators.required])]
});
}
我发现一个解决方案一样差不多2天。这是我第一次使用Ionic。任何帮助,将不胜感激。谢谢,SO社区!
答
使用get
方法像这样做的简单的方法:
this.registrationForm.get(['child', i, 'child_first_name']).setValue('asdasdasd');
如果您使用的控制属性,那么它应该如下所示:
((this.registrationForm.controls['child'] as FormArray).controls[i] as FormGroup).controls['child_first_name'].setValue("asdasdasd");
一个比较另类的可能看起来像:
this.registrationForm.patchValue({
child: [...Array(i), { child_first_name: 'asdasdasd' }]
});
+0
哇!非常感谢你@yurzui :)你整个一周都保存完好!哈哈! :d –
你可以添加addChild方法的代码吗? – yurzui
编辑了这个问题,我添加了addCHild和initChild方法。谢谢! –