У меня есть 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 регистрируются, как и ожидалось, с исправленными значениями.
- поля стали действительными (зеленая левая граница) после патча.
Что не работает:
- радиокнопки остаются пустыми (не отмечены)
Итак, теперь мне интересно, что отсутствует, чтобы восстановить проверенный статус переключателей в дополнение к их значениям?