AngularJS - 使用Typescript更改所选行的复选框状态

时间:2018-03-21 18:51:51

标签: angularjs typescript

我要做的是当我点击该行的任何部分时,将复选框更改为选中/取消选中。我也在改变所选行的颜色。 这是我得到的:

player.component.html:

<!-- Table showing players -->
<tbody *ngFor="let volunteer of volunteers; let i = index">
  <tr class="margin" (click)="setClickedRow(i)" [class.active]="selectedRows[i]==true">
    <td>
      <input type="checkbox" />
    </td>
    <td style="font-weight: bold">{{player.name}}</td>
    <td>{{player.number}}</td>
  </tr>
</tbody>

player.component.ts:

export class PlayerComponent implements OnInit {
    selectedRows: boolean[] = [false, false, false, false];
    setClickedRow: Function;

    player = [
        { name: 'Jaden', number: '2' },
        { name: 'Mickey', number: '10' },
        { name: 'Dexter', number: '22' },
        { name: 'Pedro', number: '11' },
    ];

    constructor() {

        this.setClickedRow = function (index) {
            if (!this.selectedRows[index]) {
                this.selectedRows[index] = true;
            }
            else {
                this.selectedRows[index] = false;
            }
        };
    }

    ngOnInit() { }
}

无论我点击的行的哪一部分,我都希望更改复选框。

2 个答案:

答案 0 :(得分:0)

只需绑定checked属性?

<input type="checkbox" [checked]="selectedRows[i]" />

答案 1 :(得分:0)

首先删除

this.setClickedRow = function(index){...

来自构造函数的内部。 然后设置为:

setClickedRow (index) {
  console.log("Clicked")
  this.selectedRows[index]=!!this.selectedRows[index];
};

现在点击行检查控制台。

DEMO