Абдул, у тебя есть две различия вещи:
- «Структура для создания вопросов»
- Форма
но вы не определили свою форму. Для этого вам нужно знать, как данные, которые вы хотите отправить на сервер. Я должен сказать, что вы хотите отправить на сервер что-то вроде
[1,3,1]
//or
[{question:1,answer:1},{question:2,answer:3},{question:3,answer:1}]
//or
[
{question:'why didn't you turn up',answer:'Unexpected Official Work'},
{question:'why didn't you do down',answer:'I don't know'}
]
Как видите, в любом случае вам нужен только уникальный formArray, вы используете ответ сервера для создания представления формы, но не formArray
Что вы хотите отправить на сервер?
Хорошо, если мы выберем третий вариант, это FormArray, а не formGroup. Не заботься об этом. FormArray может быть mannage как FormGroup. Сначала мы посмотрим, как создать форму Array
ngOnInit() {
this.feedbackForm = new FormArray(this.data.map(x=>new FormGroup({
'question':new FormControl(x.description),
'answer':new FormControl('')
})))
}
Обратите внимание, что форма обратной связи является массивом форм. Как создать это? Для каждого вопроса создайте группу Form с двумя элементами управления «Форма»: вопрос и ответ
.html становится похожим на
<code><form *ngIf="feedbackForm" [formGroup]="feedbackForm" (submit)="send()">
<div *ngFor="let control of feedbackForm.controls;let i=index" >
<div [formGroup]="control">
<input formControlName="question">
<div *ngFor="let a of data[i].answers">
<label>
<input type="radio" [value]="a.description" formControlName="answer">
<span>{{a.description}}</span>
</label>
</div>
</div>
</div>
<button type="submit">submit</button>
</form>
<pre> {{feedbackForm?.value | json}}
Смотрите, мы используем "данные", чтобы показать метку радиостанций и дать значение радиостанциям, но Форма - это только массив форм. Если у наших «данных» есть «идентификатор» для вопроса и ответа, мы могли бы использовать его
См. stackblitz
ПРИМЕЧАНИЕ. Я просто добавляю в стек стека типичную группу FormGroup с FormArray, потому что он отличается от HTML. 1034 *.