我有一个以表格形式设置的广播组。您可以通过单击单选按钮或更改选择控件的值来更改单选组的值。
问题:
当我在单选按钮控件上使用reset(或setValue / patchValue)时,它将取消选中该选择,因此,如果当前选择的值与我将其重置为的值相同,则不会选择任何按钮。
如何复制:
我做了一个stack blitz example
如果您去那里,则将无线电控件初始化为“一个,一个”。您可以通过单击其他按钮来更改无线电控件的值。然后,您可以通过单击重置按钮来重置值。窗体正确地还原为选择“一个,一个”。但是,如果再次按下重置按钮(或者在不更改初始值的情况下按下重置按钮)...则该表单将更改单选按钮,以使非选中状态。
该控件的支持模型数据是正确的值([1,1]),并且我用来确定是否应检查按钮的方法是有效的,并且对于正确的按钮返回true,但是由于某种原因,该按钮将不显示为选中状态。
我发现的唯一解决方法是,如果无线电控件已设置为默认值,则阻止重新设置该值,但是在我当前的用例中,这种解决方法并不容易实现,因为我正在使用嵌套的FormGroups,并且当我重置表单,我无法轻松访问控件的值。
为什么会这样,我该如何解决?
答案 0 :(得分:0)
即使这是一个老话题,我也刚刚找到了解决方案:
HTML 部分
<mat-radio-group aria-labelledby="Rolle" [formControl]="rolesControl" class="role-radio-group">
<mat-radio-button *ngFor="let userRoles of ALL_USER_ROLES"
class="role-radio-button {{isSame(userRoles) ? 'mat-radio-checked' : ''}}"
[checked]="isSame(userRoles)"
[value]="userRoles">{{userRoleAsText(userRoles)}}</mat-radio-button>
</mat-radio-group>
TS 部分
public reset(): void {
this.myGroup.reset(this.myData);
}
问题描述
添加类后,您还将突出显示单选按钮:-)