Angular formGroup中的面片值,formArray的角度?
可复制示例 这是我正在处理的示例数据 app.component.tsAngular formGroup中的面片值,formArray的角度?,angular,angular-reactive-forms,Angular,Angular Reactive Forms,可复制示例 这是我正在处理的示例数据 app.component.ts editTrainner(trainner: Trainner) { this._trainnerservice.currentTrainner = Object.assign({}, trainner); this.registrationForm.patchValue({ personal_details: { type: Object, name: { typ
editTrainner(trainner: Trainner) {
this._trainnerservice.currentTrainner = Object.assign({}, trainner);
this.registrationForm.patchValue({
personal_details: { type: Object,
name: { type: Object,
first_name: this._trainnerservice.currentTrainner.personal_details.name.first_name,
last_name: this._trainnerservice.currentTrainner.personal_details.name.last_name
},
dob: this._trainnerservice.currentTrainner.personal_details.dob,
about_yourself: this._trainnerservice.currentTrainner.personal_details.about_yourself,
languages_known: this.fb.array([this.addlanguages_known()]),
willingly_to_travel: this._trainnerservice.currentTrainner.personal_details.willingly_to_travel
}
});
}
addlanguages_known(): any {
const control = this.registrationForm.get('languages_known') as FormArray;
this._trainnerservice.currentTrainner.personal_details.languages_known.forEach(x => {
control.push(this.fb.control(''));
});
}
执行代码时,我收到一个错误:“无法读取null的属性'push'”
我想在用户单击编辑按钮时将表单数组数据推入表单 首先,您应该从
patchValue
内部删除用于设置formarray中的值的函数。而是按原样调用函数addlanguages\u known()
。那么您到formarray的路径是不正确的。您的表格位于个人详细信息中,请更正为:
addlanguages\u known():任意{
const control=this.registrationForm.get('personal\u details.languages\u known')作为FormArray;
这是.\u trainerservice.currentTrainer.personal\u details.languages\u known.forEach(x=>{
control.push(this.fb.control(x));
});
}
如前所述,从editTrainer()
中删除以下行:
languages\u known:this.fb.array([this.addlanguages\u known()]),
PS:不相关,但您使用的是某种通用类型的
对象
,您应该根据模型键入数据。这与在其他表单组中加载数据的方式相同吗?