Мне нужно представить набор вопросов, извлеченных из API, и у меня возникли проблемы с отображением формы в шаблоне и получением правильных значений ответа пользователя. Формат ответа API следующий:
{
questions: [
{
text: 'Is this a question?',
id: 'question1',
answers: [
{ text: 'Yes', id: 'answer1' },
{ text: 'No!', id: 'answer2' },
{ text: 'Don't know?', id: 'answer3' }
]
}
]
}
Я создал форму, которая выглядит следующим образом:
В компоненте
constructor(private fb: FormBuilder) {
this.questionsAnswersForm = this.fb.group({
answers: this.fb.array([])
});
}
this.initFormWithQAs()
initFormWithQAs(): void {
this.questions.map(() =>
(<FormArray>this.questionsAnswersForm.get('answers')).push(
this.addQuestionFormGroup()
)
);
}
addQuestionFormGroup(): FormGroup {
return this.fb.group({
questionId: [null, Validators.required],
answerId: [null, Validators.required]
});
}
В шаблоне
<div formArrayName="answers" *ngFor="let q of questions">
<h5>{{ q.text }}</h5>
<form [formGroupName]="q.id" class="qa-list">
<label *ngFor="let answer of q.answers">
<input
type="radio"
[value]="answer.id"
[formControlName]="answer.id"
/>
<span>{{ answer.text }}</span>
</label>
</form>
</div>
Анкета отображается на экране с правильным текстом, но переключатели не выбраны однозначно (работают как флажки), значения при отправке формы всегда равны нулю, и я также получаю следующую ошибку:
TypeError: Невозможно создать свойство 'validator' для строки 'question1'
Заранее спасибо за помощь!