简体   繁体   English

Angular:取消选中不确定复选框不起作用

[英]Angular : uncheck indeterminate checkbox not working

I have very simple requirement.我有很简单的要求。 Lets say checkbox has three states, indeterminate, checked & unchecked.假设复选框具有三种状态,不确定、选中和未选中。 What I want :我想要的是 :

  • When click on indeterminate checkbox it should uncheck当点击不确定的复选框时,它应该取消选中
  • When click on checked checkbox it should uncheck当点击选中的复选框时,它应该取消选中
  • When click on unchecked checkbox it should checked当点击未选中的复选框时,它应该被选中

But in angular2 I am not able to get solve first requirement.但是在 angular2 中,我无法解决第一个要求。 Whatever I do, when click on indeterminate checkbox it get checked (Not expected).无论我做什么,当单击不确定复选框时,它都会被选中(不期望)。

Please check stackbliz请检查stackbliz

export class AppComponent {
  name = 'Angular';
  milestone = { status: "crossed" };
  checkMilestone(milestone) {
    switch (milestone.status) {
      case "crossed": {
        milestone.status = "unchecked";
        break;
      }
      case "unchecked": {
        milestone.status = "checked";
        break;
      }
      case "checked": {
        milestone.status = "unchecked";
        break;
      }
    }
  }
}

HTML HTML

<input type="checkbox" [indeterminate]="milestone?.status === 'crossed'" [checked]="milestone?.status === 'checked'" (change)="checkMilestone(milestone)"> Status: {{ milestone?.status }} 

I want to implement parent child checkbox and select all functionality similar to this fiddle but in angular.我想实现父子复选框并选择与此小提琴类似但有角度的所有功能。

Yes, you can achieve that, just update the code to the following:是的,您可以实现这一点,只需将代码更新为以下内容:

HTML: HTML:

<input #input type="checkbox" [indeterminate]="milestone?.status === 'crossed'" 
(click)="checkMilestone($event)"
> Status: {{ milestone?.status }}

TypeScript:打字稿:

  checkMilestone(e) {
    
    switch (this.milestone.status) {
      case "crossed": {
        e.target.checked = false;
        this.milestone.status = "unchecked";
        break;
      }
      case "unchecked": {
        this.milestone.status = "checked";
        break;
      }
      case "checked": {
        this.milestone.status = "unchecked";
        break;
      }
    }
  } 

something for reference: Prevent checkbox from ticking/checking COMPLETELY供参考: 防止复选框完全勾选/检查

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM