Reputation: 608
I'm using angular material . I using mat-checkbox. I got problem, When I got data 'N' from backed and when I click checked it, it change to 'Y' but from 'Y' to 'N' not change. This DEMO for your reference.
HTML
<mat-checkbox (change)="blocked = $event?'Y':'N'" color='primary' [ngModel]="blocked === 'Y'" > IS Blocked?</mat-checkbox>
<br><br>
checkbox is {{blocked}}
Component
blocked:any='N';
Upvotes: 0
Views: 1869
Reputation: 1
Instead of:
<mat-checkbox (change)="blocked = $event?'Y':'N'" color='primary' [ngModel]="blocked === 'Y'" > IS Blocked?</mat-checkbox>
use:
<mat-checkbox (change)="blocked = $event.checked?'Y':'N'" color='primary' [ngModel]="blocked === 'Y'" > IS Blocked?</mat-checkbox>
Upvotes: 0
Reputation: 57939
if you use (change) you sould use $event.checked, see the docs
<mat-checkbox (change)="blocked = $event.checked?'Y':'N'"
[checked]="blocked === 'Y'" > IS Blocked?</mat-checkbox>
if you use (ngModelChange) you use $event
<mat-checkbox (ngModelChange)="blocked = $event?'Y':'N'"
[ngModel]="blocked === 'Y'" > IS Blocked?</mat-checkbox>
NOTE: I like use the pairs (ngModelChange)/[ngModel] or the pair (change)/[checked]
Upvotes: 1
Reputation: 1429
You may simply do
<mat-checkbox (change)="onChange($event)" color='primary' [ngModel]="blocked == 'Y' ? true : false" > IS Blocked?</mat-checkbox>
And in checkbox-overview-example.ts put below function.
onChange(event){
this.blocked = event.checked ? 'Y' : 'N';
}
Hope this helps!
Upvotes: 3
Reputation: 15423
You may simply do:
<mat-checkbox (change)="blocked = !blocked" color='primary'> IS Blocked?</mat-checkbox>
checkbox is {{blocked ? 'N' : 'Y'}}
Upvotes: 2