手写一个angular中带checkbox的table组件

效果如下:

          

HTML文件如下:

<table>
  <thead>
    <tr>
      <th width="20%">
        <input type="checkbox" [(ngModel)]="checkAll" (change)="changeChecked()" />
      </th>
      <th>资产名称</th>
      <th>资产规格</th>
      <th>资产编号</th>
    </tr>
  </thead>
  <tbody>
    <tr *ngFor="let item of tableList;let key=index">
      <td>
        <input type="checkbox" [(ngModel)]="item.checkStatus" (change)="changeCheckedChild(item)" />
      </td>
      <td>{{item.assetName}}</td>
      <td>{{item.specificationModel}}</td>
      <td>{{item.assetNumber}}</td>
    </tr>
  </tbody>
</table>

ts文件如下:

export class WorkTableComponent implements OnInit {
  checkAll; // 全部选中
  tableList = [
    {
      "uuid": "605df9e6b88349bc882649d39f70b638",
      "assetNumber": "00002",
      "assetName": "小米显示屏",
      "specificationModel": "00002",
      checkStatus: false,
      "storAddr": "https://zkfoss.oss-cn-hangzhou.aliyuncs.com/pic/zkf_1593760586175.png"
    },
    {
      "uuid": "fd6f06103c4d4512957c45effaefbf88",
      "assetNumber": "11111111",
      "assetName": "11111",
      "specificationModel": "",
      "storAddr": null,
      checkStatus: false
    }
  ];
  constructor() { }

  ngOnInit() { }
  // 点击全选
  changeChecked() {
    this.tableList = this.tableList.map(item => Object.assign({}, item, { 
        checkStatus: this.checkAll 
     }))
  }
  // 点击每一项选择
  changeCheckedChild(getItem) {
    var onOff = true; // 假设所有的都是选中
    this.tableList.forEach(item => {
      if (!item.checkStatus) {
        onOff = false;
      }
    })
    this.checkAll = onOff
  }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值