javascript - angular 2复选框选择全部

标签 javascript html angular typescript

问题

我在寻找这个问题的答案,但我仍然卡住了我有一个多行的表,每行都有一个复选框,我需要一个复选框来选择所有和取消选择所有,这里有一些示例代码

模板

<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

关于javascript - angular 2复选框选择全部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39560199/

相关文章:

html - 带图像的垂直居中文本

angular - Ng-Bootstrap Datepicker,如何突出显示 Angular4 中的特定日期

javascript - jquery 查找数组中特定的字符串模式

javascript - Azure Blob 图像上传 405(资源不支持指定的 Http 谓词)

javascript - 如何使用 HTML 和 javascript 上传自己的文件

javascript - 如何使用 fetch 处理流数据?

spring - 如何以 Angular 处理 session 到期?

html - CSS : Panel body slide down and slide up

javascript - 如何计算luxon中两个日期之间的持续时间?

javascript - HTML5 纸牌游戏