MatCheckbox preventDefault()和event.checked值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MatCheckbox preventDefault()和event.checked值相关的知识,希望对你有一定的参考价值。

如何实现Material复选框,以便默认情况下不会选中/取消选中(例如,在事件上调用preventDefault())并从事件中获取checked值?

似乎我只能达到其中一个条件。使用(click)事件我无法获取复选框的值并使用(change)事件我无法阻止默认复选框值更改(我只会在基础HTTP请求成功时更改复选框值)。

Stackblitz:https://stackblitz.com/edit/matcheckbox-checked

<mat-checkbox 
  [checked]="checked"   
  (click)="onClick($event)"
>onClick me!</mat-checkbox>

<br/>

<mat-checkbox 
  [checked]="checked"
  (change)="onChange($event); false"
>onChange me!</mat-checkbox>

export class CheckboxOverviewExample {
  checked: boolean = false;

  onClick(event) {
    event.preventDefault();
    console.log('onClick event.checked ' + event.checked);
    console.log('onClick event.target.checked '+event.target.checked);
  }

  onChange(event) {
    // can't event.preventDefault();
    console.log('onChange event.checked '+event.checked);
  }
}

(click)事件打印undefined值,但成功阻止事件传播,(change)事件打印值但会传播事件。

连接问题:

答案

如果要手动勾选复选框@ViewChild获取元素的ref,则使用checked设置值true或false,如下所示

@ViewChild('ref') ref;

  onClick(bool){
    this.ref._checked=bool;
  }

例如:https://stackblitz.com/edit/matcheckbox-checked-ybru81

事件处理时的相同示例:https://stackblitz.com/edit/matcheckbox-checked-a1le6o

另一答案

尝试不确定

校验 切换复选框的选中值,忽略不确定值。如果复选框处于不确定状态,则无论选中的值如何,该复选框都将显示为不确定复选框。

入住不确定 mat-checkbox的默认行为。当用户单击mat复选框时,始终将indeterminate设置为false。这匹配原生“input type =”复选框“”的行为

https://material.angular.io/components/checkbox/overview#-code-check-code-

另一答案

我们无法控制复选框和事件属性的默认行为。您可以创建具有已选中和未选中状态的2个图像图标,并根据值进行切换。

以上是关于MatCheckbox preventDefault()和event.checked值的主要内容,如果未能解决你的问题,请参考以下文章

阻止事件冒泡和阻止默认行为

Dynamic 点击保存按钮。不让它保存

如何在iFrame中添加原始关闭按钮?

用于创建新元素的 Mutation Observer

页面刷新后保留选择复选标记

在 2 个 rails 应用程序之间发布表单,包括文件