Вы можете сохранить событие click
на своем checkbox
, проверить лимит выбора checkbox
для этого события и решить, следует ли продолжить это событие или нет.Если вы prevent
это событие произойдет, то в конечном итоге оно не будет запускать change
событие checkbox
Код
checkLimit(event) {
// To make this SSR proof code, you could consider using Renderer to query DOM
let dom = event.currentTarget.querySelector('.mat-checkbox-input');
console.dir('Dom', dom, event.currentTarget)
if (!dom.checked && this.columns.filter(col => col.show).length >= 3) {
event.stopPropagation()
event.preventDefault()
alert('Cant select more than three column')
return
}
}
Html
<mat-checkbox *ngFor="let column of columns"
(click)="checkLimit($event)"
[(ngModel)]="column.show">
{{column.name | titlecase}}
</mat-checkbox>