UNPKG

ng-ytl-zorro-antd

Version:

An enterprise-class UI components based on Ant Design and Angular

88 lines (80 loc) 2.92 kB
import { Component, OnInit } from '@angular/core'; @Component({ selector: 'nz-demo-table-selection-and-operation', template: ` <div style="margin-bottom: 16px;"> <button nz-button [disabled]="_disabledButton" [nzType]="'primary'" [nzLoading]="_operating" (click)="_operateData()">Operating</button> <span style="margin-left: 8px;" *ngIf="_checkedNumber">Selected {{_checkedNumber}} items</span> </div> <nz-table #nzTable [nzDataSource]="_dataSet" [nzPageSize]="10" (nzDataChange)="_displayDataChange($event)" (nzPageIndexChange)="_refreshStatus()" (nzPageSizeChange)="_refreshStatus()"> <thead nz-thead> <tr> <th nz-th nzCheckbox> <label nz-checkbox [(ngModel)]="_allChecked" [nzIndeterminate]="_indeterminate" (ngModelChange)="_checkAll($event)"> </label> </th> <th nz-th><span>Name</span></th> <th nz-th><span>Age</span></th> <th nz-th><span>Address</span></th> </tr> </thead> <tbody nz-tbody> <tr nz-tbody-tr *ngFor="let data of nzTable.data"> <td nz-td nzCheckbox> <label nz-checkbox [(ngModel)]="data.checked" (ngModelChange)="_refreshStatus($event)"> </label> </td> <td nz-td>{{data.name}}</td> <td nz-td>{{data.age}}</td> <td nz-td>{{data.address}}</td> </tr> </tbody> </nz-table>`, styles : [] }) export class NzDemoTableSelectionAndOperationComponent implements OnInit { _allChecked = false; _disabledButton = true; _checkedNumber = 0; _displayData: Array<any> = []; _operating = false; _dataSet = []; _indeterminate = false; _displayDataChange($event) { this._displayData = $event; } _refreshStatus() { const allChecked = this._displayData.every(value => value.checked === true); const allUnChecked = this._displayData.every(value => !value.checked); this._allChecked = allChecked; this._indeterminate = (!allChecked) && (!allUnChecked); this._disabledButton = !this._dataSet.some(value => value.checked); this._checkedNumber = this._dataSet.filter(value => value.checked).length; } _checkAll(value) { if (value) { this._displayData.forEach(data => data.checked = true); } else { this._displayData.forEach(data => data.checked = false); } this._refreshStatus(); } _operateData() { this._operating = true; setTimeout(_ => { this._dataSet.forEach(value => value.checked = false); this._refreshStatus(); this._operating = false; }, 1000); } ngOnInit() { for (let i = 0; i < 46; i++) { this._dataSet.push({ key : i, name : `Edward King ${i}`, age : 32, address: `London, Park Lane no. ${i}`, }); } } }