[英]I need to convert one of the form arrray in my formGroup
This is my ngOnInit这是我的 ngOnInit
ngOnInit() {
this.formGroup = this._formBuilder.group({
basic: this._formBuilder.array([this.basicGroup()]),
experience: this._formBuilder.array([this.experienceGroup()]),
education: this._formBuilder.array([this.educationGroup()]),
skills: this._formBuilder.array([this.skillsGroup()]),
contact: this._formBuilder.array([this.contactGroup()]),
summary: this._formBuilder.array([this.summaryGroup()]),
});
then I pass values of form group to params and print it on console.然后我将表单组的值传递给 params 并将其打印在控制台上。
In my console after form submission am getting the form values like this.提交表单后,在我的控制台中,我得到了这样的表单值。
{
basic:[{...}]
experience:[{...}]
education:[{...}]
skills:[{...}]
contact:[{...}]
summury:[{...}]
}
I need to extract the values in basic array and the values in form group should be look like this when I console value of params我需要提取基本数组中的值,当我控制台 params 的值时,表单组中的值应该是这样的
{
profile_name: value
country_id: value
and all other fields in basic
experience:[{...}]
education:[{...}]
skills:[{...}]
contact:[{...}]
summury:[{...}]
}
my basic form array looks like this我的基本表单数组看起来像这样
basicGroup(): FormGroup{
return this._formBuilder.group({
profile_name: ['', [Validators.required]],
country_id: ['', [Validators.required]],
address: ['', [Validators.required]],
years_of_experience: ['', [Validators.required]],
cell_phone: ['', [Validators.required, Validators.pattern("^((\\+91-?)|0)?[0-9]{10}$")]],
main_phone: ['', [Validators.pattern("^((\\+91-?)|0)?[0-9]{10}$")]],
})
}
How can I solve this?我该如何解决这个问题?
You can directly add formControls
for each individual items of basicGroup
instead of adding basicGroup
as formArray
.您可以直接添加formControls
的每个个别项目basicGroup
而不是添加basicGroup
为formArray
。 For example:例如:
this.formGroup = this._formBuilder.group({
profile_name: ['', [Validators.required]],
country_id: ['', [Validators.required]],
address: ['', [Validators.required]],
years_of_experience: ['', [Validators.required]],
cell_phone: ['', [Validators.required, Validators.pattern("^((\\+91-?)|0)?[0-9]{10}$")]],
main_phone: ['', [Validators.pattern("^((\\+91-?)|0)?[0-9]{10}$")]],
experience: this._formBuilder.array([this.experienceGroup()]),
education: this._formBuilder.array([this.educationGroup()]),
skills: this._formBuilder.array([this.skillsGroup()]),
contact: this._formBuilder.array([this.contactGroup()]),
summary: this._formBuilder.array([this.summaryGroup()]),
});
else别的
Try basicGroup as a child formGroup.尝试将 basicGroup 作为子 formGroup。
basicGroup: this._formBuilder.group({ profile_name: ['', [Validators.required]], country_id: ['', [Validators.required]], address: ['', [Validators.required]], years_of_experience: ['', [Validators.required]], cell_phone: ['', [Validators.required, Validators.pattern("^((\\\\+91-?)|0)?[0-9]{10}$")]], main_phone: ['', [Validators.pattern("^((\\\\+91-?)|0)?[0-9]{10}$")]] })
And before posting this to backend pass it though a mapper function like this:在将其发布到后端之前,通过这样的映射器函数传递它:
mapper(){ let formattedOutput = {...this.formGroup.value}; delete formattedOutput.basicGroup; formattedOutput = { ...formattedOutput, ...this.formGroup.get('basicGroup').value } return formattedOutput; }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.