У меня проблемы с вложенными FormArrays в угловых реактивных формах. Один из моих массивов форм правильно возвращается как FormArray, а другой возвращается как FormControl. В функции initialMaterials () у меня есть два console.logs. console.log(control)
возвращает элемент FormControl, а console.log(this.objectServiceJobsArray)
возвращает FormArray.
Мне нужно иметь возможность добавлять материалы к определенным заданиям в массиве и при необходимости изменять их в форме.
this.objectServiceForm = this.formBuilder.group({
onHolidays: [this.objectService.onHolidays],
objectServiceJobs: this.formBuilder.array([this.objectServiceJobs()]),
isBillable: [this.objectService.isBillable],
defaultPrice: [this.objectService.defaultPrice],
pricePerHour: [this.objectService.pricePerHour],
doneWeekly: [this.doneWeekly],
});
objectServiceJobs(): FormGroup {
return this.formBuilder.group({
job: [''],
workDetail: [''],
competentWorkers: [[]],
materials: this.formBuilder.array([this.objectServiceJobMaterials()])
});
}
objectServiceJobMaterials(): FormGroup {
return this.formBuilder.group({
material: [null],
quantity: [null]
});
}
initialMaterials(job) {
const index = (<FormArray>this.objectServiceForm.get('objectServiceJobs')).controls.findIndex(x => x.value.job.id === job.id);
const control = (<FormArray>this.objectServiceForm.controls['objectServiceJobs']).at(index).get('materials') as FormArray;
console.log(control);
console.log(this.objectServiceJobsArray);
// job.materials.forEach(mat => {
// this.objectServiceJobsArray[index].materials.push(this.makeMaterialFormGroup(mat));
// });
}