angular - Bind <mat slide toggle> ved å bruke [(ngModel)] med en strengverdi i HTML
Jeg har en material slide-bryter og den er toveis bundet til en strengvariabel som har verdien "true" eller "false" ved bruk av [(ngModel)]. Bryteren oppdaterer verdien av variabelen korrekt når jeg vipper den, men første gang den lastes inn i DOM, viser den alltid sin tilstand som true selv om verdien i variabelen er "false".
<div *ngIf="agent.attributes[i].type == 'Boolean'">
<mat-slide-toggle [checked]="agent.attributes[i].value == 'true' ? true : false"
[(ngModel)]="agent.attributes[i].value">{{agent.attributes[i].value}}</mat-slide-toggle>
</div>
dette er resultatet
Svar #1
du binder en strengverdi til ngModel som trenger å være boolsk for sjekk, så endre det til:
<div>
<mat-slide-toggle
[checked]="agent.attributes[i].value === 'true' ? true : false"
(change)="setValue( i , $event )">
{{agent.attributes[i].value}}
</mat-slide-toggle>
</div>
ts-kode:
setValue(i , e){
if(e.checked){
this.agent.attributes[i].value = 'true'
}else{
this.agent.attributes[i].value = 'false'
}
}
DEMO
