【发布时间】:2018-05-21 11:08:46
【问题描述】:
我有一个带有mat-checkbox 的用户表列表。当mat-checkbox被点击时,只有在某个条件为真时才应该勾选复选框。
在这段代码中,我试图只检查id=2 的复选框。但是正如您所看到的,最初当单击2 的复选框时,即使将2 添加到应检查的元素数组中,它也不会被检查。
另一方面,当1,3 or 4 的复选框被点击时,它们会被选中。
component.html
<tbody>
<tr *ngFor="let user of users; let in = index">
<td>
<mat-checkbox [ngModel]="canbeChecked(user.id)" (click)="userSelectClick(user.id)"></mat-checkbox>
</td>
</tr>
</tbody>
组件.ts
export class AppComponent {
users = [{ id: 1 }, { id: 2 }, { id: 3 }, { id: 4 }];
checked: boolean = true
constructor() { }
selected: any = [];
canbeChecked(id): boolean {
console.log("check " + id)
console.log(this.selected)
return this.selected.includes(id);
}
userSelectClick(id) {
if (!this.selected.includes(id)) {
if (id == 2)
this.selected.push(id);
console.log("select " + id)
console.log(this.selected)
}
else {
this.selected = this.selected.filter(item => item !== id)
}
}
}
【问题讨论】:
-
请查看我的代码.. 我在
ngModel上使用了事件绑定,以便在点击事件时更新。
标签: angular typescript angular-material2