У меня есть FormGroup с несколькими радиокнопками, которая динамически строится, как показано ниже:
toFormGroup(questions: Question[]) {
const group: any = {};
questions.forEach((question) => {
group[question.id] = new FormControl('', Validators.required);
});
return new FormGroup(group);
}
Здесь соответствующий html радио входа
<div class="radio" *ngFor="let answer of answers">
<label class="radio">
<input type="radio"
[formControlName]="question.id"
[value]="answer"/> {{answer.name}}
</label>
</div>
Форма работаетхорошо, когда пользователь выбирает их вручную, но сейчас я пытаюсь добавить возможность возобновить наполовину заполненную форму, поэтому необходимо заново заполнить ее сохраненными значениями.
Минимальный пример того, какЯ (пытаюсь) заполнить его:
patchValues() {
console.log('Form value before: ' + JSON.stringify(this.form.value));
const value = {};
value[1] = new Answer(99, 'YES');
value[2] = new Answer(100, 'NO');
console.log('Patching values: ' + JSON.stringify(value));
this.form.patchValue(value);
console.log('Form value after: ' + JSON.stringify(this.form.value));
}
Что работает:
- значения form.value записываются, как и ожидалось, с пропатченными значениями.
- поля стали действительными (зеленая левая граница) после патча.
![enter image description here](https://i.stack.imgur.com/DTRAS.png)
Что не работает:
- переключатели остаются пустыми (не проверены)
Так что теперь мне интересно, что за недостающая часть, чтобы восстановить проверенное состояние переключателей в дополнение к их значениям?