【发布时间】:2018-10-29 02:19:11
【问题描述】:
我有一个带有几个单选按钮的 FormGroup,它是动态构建的,如下所示:
toFormGroup(questions: Question[]) {
const group: any = {};
questions.forEach((question) => {
group[question.id] = new FormControl('', Validators.required);
});
return new FormGroup(group);
}
这里输入radio对应的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 的值按预期与修补后的值一起记录。
- 补丁后字段变为有效(绿色左边框)。
什么不工作:
- 单选按钮保持空白(未选中)
所以现在我想知道除了它们的值之外,为了恢复单选按钮的选中状态,还缺少什么?
【问题讨论】:
-
单选按钮的选中状态存储在哪里?
-
我只是在数据库中存储了 fieldName --> dirtyValue 之类的东西。我需要额外存储一些东西吗?
标签: angular forms radio-button reactive-forms