如何让一个复选框控制其他复选框,每个复选框都有自己的控制设置

问题描述

我有 3 个复选框(可以有更多),如下所示

enter image description here

如果我想让复选框表现如下

  • 检查完成只会检查完成
  • 检查部分完成也会检查完成
  • 选中 Unusable 也会选中 Partially Complete 和 Complete

  • 取消选中 Complete 也会取消选中 Partially Complete and Unusable
  • 取消选中部分完成也会取消选中不可用
  • 取消选中 Unusable 只会取消选中 Unusable

解决方法

假设您想将这些项目作为单个 status 对象进行跟踪...

<label> Complete </label>
<input type="checkbox"
         [(ngModel)]="status.complete"
         (change)="checkValue('complete')"/>  


<label> Partial </label>
<input type="checkbox"
         [(ngModel)]="status.partial"
         (change)="checkValue('partial')"/>  


<label> Unusable </label>
<input type="checkbox"
         [(ngModel)]="status.unusable"
         (change)="checkValue('unusable')"/>  

.. 在 .ts 中

status: any;

ngOnInit() {
this.status={complete:false,partial:false,unusable:false} ;

checkValue(which:string){
  if (this.status[which]) {
     // item is checked
     switch (which) {
       case 'complete':
       this.status.partial = false;
       this.status.unusable = false;
       break;

       case 'partial':
       this.status.complete = true;
       this.status.unusable = false;
       break;

       case 'unusable':
       this.status.complete = this.status.partial = true;
       break;
      }
  } else {
    // item is unchecked
    switch (which) {
       case 'complete':
       this.status.partial = false;
       this.status.unusable = false;
       break;

       case 'partial':
       this.status.unusable = false;
       break;

      }
  } 
}

}

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...