javascript Angular |以编程方式设置元素属性

vbopmzt1  于 2023-03-16  发布在  Java
关注(0)|答案(3)|浏览(164)

我正在利用角材料创建一个真棒网络应用程序。请考虑以下代码:

<mat-checkbox class="master" (click)='checkAll()'>Checkbox MASTER</mat-checkbox>
<mat-checkbox class="checkbox">Checkbox 2</mat-checkbox>
<mat-checkbox class="checkbox">Checkbox 3</mat-checkbox>

代码生成三个复选框。当选中第一个复选框时,其他两个复选框也应该被选中。如果没有选中第一个复选框,其他两个复选框应该正常工作。
在组件中:

checkAll() {
  // How can I programmatically set the [checked] property here for .checkbox?
}
slsn1g29

slsn1g291#

这里有一个简单的解决方案,可以勾选任意数量的复选框。如果您手动勾选所有复选框,它还会更新主复选框:
组件类

get master() {
  return this.checkboxes.every(c => c.checked);
}
set master(v) {
  this.checkboxes.forEach(c => c.checked = v);
}
checkboxes = new Array(5).fill(0).map(v => ({checked: false}));

组件模板

<label>
  <input type="checkbox" #masterCheckbox [checked]="master" 
  (change)="master=masterCheckbox.checked">
  Check/Uncheck ALL
</label>

<ng-container *ngFor="let chk of checkboxes; let index=index">
  <br>
  <label>
    <input type="checkbox" [checked]="chk.checked" (change)="chk.checked=!chk.checked">
    Checkbox {{index}}
  </label>
</ng-container>

https://stackblitz.com/edit/checkbox-behavior?file=src%2Fapp%2Fapp.component.html

gupuwyp2

gupuwyp22#

下面是这样做的一个例子:
超文本标记语言

<mat-checkbox class="master" (click)='checkAll()'>Checkbox MASTER</mat-checkbox>
<mat-checkbox [checked]="property1" class="checkbox">Checkbox 2</mat-checkbox>
<mat-checkbox [checked]="property2" class="checkbox">Checkbox 3</mat-checkbox>

类别:

//setting to different properties gives you the choice to check them individually
  property1;
  property2;

  checkAll() { 
     // this supposes that you want to uncheck in group also, if not set them just to 'true'
     this.property1 = !this.property1; 
     this.property2 = !this.property2;
  }

Demo

bgibtngc

bgibtngc3#

将[checked]属性添加到第二个和第三个材质复选框:

<mat-checkbox class="master" (click)='checkAll()'>Checkbox MASTER</mat-checkbox>
<mat-checkbox class="checkbox" [checked]="checkedWhenFirstIsChecked">Checkbox 2</mat-checkbox>
<mat-checkbox class="checkbox" [checked]="checkedWhenFirstIsChecked">Checkbox 3</mat-checkbox>

在组件中使用false初始化“checkedWhenFirstIsChecked”。
并在函数中将其设置为true:

checkedWhenFirstIsChecked: boolean = false;

checkAll() {
  this.checkedWhenFirstIsChecked = true;
}

在“checked”周围加上[]表示已经创建了单向绑定,您只需要设置值。

相关问题