При вызове API у меня есть массив вопросов и их вариантов JSON.
[
{
"QuestionText": "Question goes here...",
"AnswerChoice": [
{
"text": "text1",
"answerId": "1"
},
{
"text": "text2",
"answerId": "2"
},
{
"text": "text3",
"answerId": "3"
},
{
"text": "text4",
"answerId": "4"
},
{
"text": "text5",
"answerId": "5"
}
],
"questionId": "1"
},
{
"QuestionText": "Second question goes here...?",
"AnswerChoice": [
{
"text": "text1",
"answerId": "1"
},
{
"text": "text2",
"answerId": "2"
},
{
"text": "text3",
"answerId": "3"
},
{
"text": "text4",
"answerId": "4"
},
{
"text": "text5",
"answerId": "5"
}
],
"questionId": "2"
}
... and so on.
]
Варианты ответов - это переключатели в пользовательском интерфейсе.
Итак, теперь вопрос.
Я пытаюсь создать реактивную форму для этой проблемы. Я не могу придумать решение. Я пытаюсь создать вложенный FormArrays, но тщетно.
Мои попытки решить эту проблему:
HTML -
<form [formGroup]="eidFormSubmission">
<div>
<div *ngFor="let question of questions; let i = index">
<p>
{{i+1}}. {{question.QuestionText}}
</p>
<div class="form-group">
<div>
<div class="custom-control custom-radio"
*ngFor="let answer of question.AnswerChoice let k=index">
{{question.questionId}}
<input [value]="answer.answerId" type="radio" formControlName="i"
id="{{question.questionId}}" name="quesAnswer"
class="custom-control-input">
<label class="custom-control-label" for="{{question.questionId}}">
{{ answer.text }}</label>
</div>
</div>
</div>
</div>
</div>
<button (click)="onSubmitAnswers()" class="btn btn-primary">Next</button>
</form>
TS -
eidFormSubmissionInit(){
const formArray = this.formBuilder.array([]);
this.eidFormSubmission = this.formBuilder.group({
questions: formArray
})
}
Теперь я не понимаю, как динамически (после ответа API) вставить sh в formbuilder.
И вторая проблема связана с переключателем, когда я выбираю вариант из второго вопроса, который он отменяет из первый вопрос
Буду признателен за любую помощь!