Трудно сказать точные ошибки без работающего образца.
Некоторые вещи, которые я заметил:
1) Когда мы используем FormArray
, мы должны связать его в шаблонечерез formArrayName
2) Я не совсем понимаю, почему вы звоните addControl
в форме вопроса. Не должны ли мы вставить новую опцию в FormArray
?
Пример формы с FormArray
:
this.questionForm = this.fb.group({
question: ["Sample Question"],
options: this.fb.array([
this.fb.group({
response: ["Response Example"],
valid: [true]
})
])
});
Ссылка FormArray
в шаблоне через formArrayName
:
<form [formGroup]="questionForm">
<input type="text" formControlName="question" />
<div formArrayName="options">
<div *ngFor="let option of options.controls; let i=index">
<b>Option {{i}}:</b>
<div [formGroupName]="i">
<input type="text" formControlName="response" />
<input type="checkbox" formControlName="valid" />
</div>
</div>
</div>
</form>
Наконец, метод добавления новой опции:
addOption() {
this.options.push(
this.fb.group({
response: [""],
valid: [false]
})
);
}
// getter which simplifies the access via 'this.options' used in the addOption method
get options() {
return this.myForm.get("options") as FormArray;
}
Взгляните на codesandbox . Не стесняйтесь раскошелиться и отредактировать его, чтобы он лучше показал вашу проблему.