重置后,“角度材质”单选按钮不显示所选值

时间:2018-09-10 18:33:21

标签: angular angular-material

我有一个以表格形式设置的广播组。您可以通过单击单选按钮或更改选择控件的值来更改单选组的值。

问题:

当我在单选按钮控件上使用reset(或setValue / patchValue)时,它将取消选中该选择,因此,如果当前选择的值与我将其重置为的值相同,则不会选择任何按钮。

如何复制:

我做了一个stack blitz example

如果您去那里,则将无线电控件初始化为“一个,一个”。您可以通过单击其他按钮来更改无线电控件的值。然后,您可以通过单击重置按钮来重置值。窗体正确地还原为选择“一个,一个”。但是,如果再次按下重置按钮(或者在不更改初始值的情况下按下重置按钮)...则该表单将更改单选按钮,以使非选中状态。

该控件的支持模型数据是正确的值([1,1]),并且我用来确定是否应检查按钮的方法是有效的,并且对于正确的按钮返回true,但是由于某种原因,该按钮将不显示为选中状态。

我发现的唯一解决方法是,如果无线电控件已设置为默认值,则阻止重新设置该值,但是在我当前的用例中,这种解决方法并不容易实现,因为我正在使用嵌套的FormGroups,并且当我重置表单,我无法轻松访问控件的值。

为什么会这样,我该如何解决?

1 个答案:

答案 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);
}

问题描述

选择本身正在起作用。但是css类不会被设置... enter image description here

添加类后,您还将突出显示单选按钮:-)

enter image description here