使用[(ngModel)]与HTML中的字符串值绑定<mat slide toggle>

Raz*_*ahi 2 typescript angular-material angular

我有一个素材滑动切换按钮,它是使用[(ngModel)]用值“ true”或“ false”的字符串变量进行两种方式绑定的,当我切换它时,该按钮会正确更新变量的值,但对于第一次将其加载到DOM中时,即使变量中的值为“ false”,它也始终将其状态显示为true。

<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>
Run Code Online (Sandbox Code Playgroud)

这是结果

Fat*_*zli 6

您将字符串值绑定到ngModel,该值需要为布尔值才能进行检查,因此请将其更改为:

<div>
  <mat-slide-toggle 
      [checked]="agent.attributes[i].value === 'true' ? true : false"
      (change)="setValue( i , $event )">
      {{agent.attributes[i].value}}
  </mat-slide-toggle>
</div>
Run Code Online (Sandbox Code Playgroud)

ts代码:

setValue(i , e){
    if(e.checked){
        this.agent.attributes[i].value = 'true'
   }else{
        this.agent.attributes[i].value = 'false'
   }
}
Run Code Online (Sandbox Code Playgroud)

演示