在 angular 11 响应式表单中,若单选按钮(``)未正确显示默认值,根本原因在于未将 `formcontrol` 的初始值与原生 `checked` 属性同步;应避免手动绑定 `[checked]` 和 `(click)`,而应统一通过 `formcontrolname` 和 `formcontrol` 管理状态。
在你提供

你的代码中存在两个关键问题:
✅ 正确做法:统一使用字符串值,并确保 FormControl 初始值与之匹配:
// 组件 TS 中:初始化为字符串 'false'
this.form = this.fb.group({
isTaxPaid: ['false'] // ← 注意:用字符串,而非布尔 false
});? 验证效果:此时“No”单选按钮将自动被选中,且 this.form.get('isTaxPaid').value 返回 'false'(字符串),符合 HTML 表单规范。
? 进阶建议(保持布尔逻辑):
若业务逻辑中更倾向使用布尔值(如后端 API 要求布尔字段),可在提交前做类型转换,或使用 valueAccessor 自定义控制值访问器。但对大多数场景,在表单层统一使用字符串值是最简洁、最符合 Angular 响应式表单设计原则的方式。
⚠️ 注意事项:
这样即可确保默认选中行为稳定可靠,同时完全兼容 Angular 表单的验证、重置、禁用等全部功能。
来电咨询