I'm trying to iterate over values in FormBuilder in Angular 8 The path is FormGroup -> FormArray -> FormGroup -> FormArray But i got this error: Cannot find control with path: 'conditions -> 2 -> values -> 0 -> [object Object]' I tried lot of combinaison but no one works
In my component:
conditionsForm: FormGroup;
conditionForm: FormArray;
conditionValuesForm: FormArray;
ngOnInit() {
this.conditionsForm = this.formBuilder.group({
conditions: this.formBuilder.array([this.createConditionForm()])
});
}
createConditionForm(): FormGroup {
return this.formBuilder.group({
type: "",
operator: "",
values: this.formBuilder.array([this.createConditionValuesForm()])
});
}
createConditionValuesForm(): FormGroup {
return this.formBuilder.group({
value: ""
});
}
addConditionForm(): void {
this.conditionForm = this.conditionsForm.get("conditions") as FormArray;
this.conditionForm.push(this.createConditionForm());
}
addConditionValuesForm(): void {
this.conditionValuesForm = this.conditionForm.get("values") as FormArray;
this.conditionValuesForm.push(this.createConditionValuesForm());
}
In my template:
<form [formGroup]="conditionsForm" class="row container-condition">
<div formArrayName="conditions" *ngFor="let condition of conditionsForm.get('conditions').controls; let i_condition = index">
<div class="row row-condition" [formGroupName]="i_condition">
<!-- INPUT VALUE -->
<div [formGroup]='condition'></div>
<div formArrayName="values" *ngFor="let value of condition.get('values').controls; let i_value = index">
<div [formGroupName]="i_value">
<mat-form-field class="example-full-width">
<input matInput placeholder="Value" value="" [formControlName]="value.value">
</mat-form-field>
</div>
</div>
</div>
</div>
<button (click)="addConditionForm()">Add condition</button>
<button type="button" (click)="printMyForm()">Print to console</button>
</form>