私はmat-checkbox
のユーザテーブルリストを持っています。 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>
component.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)
}
}
}
の作業コード:https://stackblitz.com/edit/mat-checkbox-conditional
てくださいです私のコードを参照してください..私はクリックイベントで更新されるように 'ngModel'でイベントバインディングを使用しています。 – Niladri