You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular FormArray嵌套FormGroup时PrimeNG单选按钮全组选中问题排查

问题根因

这个问题是单选按钮的name属性重复导致的。
不管是原生HTML单选框还是PrimeNG的p-radioButton组件,都是通过相同的name属性来判定是否属于同一个互斥组:只要name属性一致,就会被归为同一组,选中组内任意一个按钮,同组其他按钮都会自动取消选中。
你在循环渲染每个权限分组时,所有分组下的permission1单选框的name都硬编码成了permission1,permission2、permission3同理,页面上所有同name的单选框都被判定为同一个互斥组,自然会出现点击一个全部分组同步选中的问题。
普通输入控件没有互斥逻辑,name属性不会影响值绑定,所以之前用普通表单控件时没有触发问题。

修复方案

只需要把当前循环的索引i拼到name属性中,保证每个分组的单选框name全局唯一即可,修改示例如下:

<p-radioButton (onClick)="logRadio($event, setting)" [name]="'permission1-' + i"
  formControlName="permission1" [value]="0">
</p-radioButton>

其余permission2、permission3对应的单选框也按同样规则修改,给name加上当前循环的索引后缀即可。
修改后每个分组的单选框name都是唯一的,互斥逻辑只会在当前分组内生效,不会再出现跨分组同步选中的问题。

内容的提问来源于stack exchange,提问作者Jeremy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 08:12:03