角度2复选框以选择全部

前端之家收集整理的这篇文章主要介绍了角度2复选框以选择全部前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我寻找这个问题的答案,但我仍然卡住我有一个多行的表,每行有一个复选框,我需要一个复选框来选择所有并取消全部,这里有一些示例代码
模板:

<table class="table table-bordered table-condensed table-striped table-hover">
<thead>
    <tr>
        <th></th>
        <th>Size</th>
        <th>Diameter</th>
        <th class="text-center">
            <input type="checkBox" name="all" (change)="checkAll($event)"/>
        </th>
    </tr>
</thead>
<tbody>
    <tr *ngFor="let size of sizes | async ; let i = index">
        <td class="text-right">{{i + 1}}</td>
        <td class="text-right">{{size.size}}</td>
        <td>{{size.diameter}}</td>
        <td class="text-center">
            <input type="checkBox" name="sizecb[]" value="{{size.id}}"/>
        </td>
    </tr>
</tbody>

零件:

export class ListSizeComponent implements OnInit {
constructor () {
}

sizes: any;

setSizes() {
    this.sizes = [
        {'size': '0','diameter': '16000 km'},{'size': '1','diameter': '32000 km'}
    ]
}

checkAll(ev) {
    if (ev.target.checked) {
        console.log("True")
    } else {
        console.log("False");
    }
}

ngOnInit(): void {
    this.setSizes();
}

}

解决方法

您可以利用ngModel来做到这一点.

模板:

<input type="checkBox" name="all" [checked]="isAllChecked()" (change)="checkAll($event)"/>
....
<input type="checkBox" name="sizecb[]" value="{{size.id}}" [(ngModel)]="size.state"/>

零件:

checkAll(ev) {
  this.sizes.forEach(x => x.state = ev.target.checked)
}

isAllChecked() {
  return this.sizes.every(_ => _.state);
}

Stackblitz Example

猜你在找的Angularjs相关文章