angular - 反转 mat-checkbox 的 "checked"值

标签 angular angular7 angular-material2 angular-material-7

当选中 Angular Material mat-checkbox ( https://material.angular.io/components/checkbox/overview ) 时,它的值为“true”。当未选中时,其值为“false”。

有办法扭转这种行为吗?我需要的恰恰相反。调用 this.filterFormGroup.getRawValue() 时,选中的复选框应序列化为“false”,未选中的复选框应序列化为“true”。

我希望有这样的事情:

<mat-checkbox [myCustomCheckedValue]="false" [myCustomUnCheckedValue]="true"></mat-checkbox>

或者我是否需要创建一个像这样的自定义指令:

<mat-inverted-checkbox></mat-inverted-checkbox>

我的目标是这段代码:

    this.filterGroup = new FormGroup({
        resolved: new FormControl(),
    });

    this.filterGroup.getRawValue();

当复选框被选中时,返回{resolved: false}

最佳答案

Tobias,即使您没有输入,formControl 也存在。所以,如果你有

  form = new FormGroup({
    resolved: new FormControl()
  })

你可以使用类似的东西:

<mat-checkbox [checked]="!form.value.resolved"
              (change)="form.get('resolved').setValue(!$event.checked)">
   Check me!
</mat-checkbox>

参见 stackblitz

请注意,如果您只有一个唯一的 formControl,则:

mycontrol=new FormControl()

你使用

<mat-checkbox [checked]="!mycontrol.value"
              (change)="mycontrol.setValue(!$event.checked)">
   Check me!
</mat-checkbox>

关于angular - 反转 mat-checkbox 的 "checked"值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57185576/

相关文章:

angular - combineLatest 是否因为 behaviorSubject 而没有触发?

Angular Material 在多个表上进行不同的垫排序

使用 routerLink 的 Angular 2 单元测试组件

Angular Material Snackbar 未正确显示

jquery - 如何使用 jquery 在 Angular 7 中使用 bootstrap popover?

javascript - Angular 2 : Two backend service calls on success of first service

angular - 如何在 Angular 7 中增加超过 2 分钟的 HTTP 请求超时?

css - 如何自定义 Angular Material Form Field 组件?

angular - 在 Angular Material 中选择芯片时的错误行为

javascript - 在小屏幕上隐藏/显示图像