Проблема с вашим кодом заключается в том, что ваша привязка [(ngModel)]
перезаписывает привязку [checked]
.Удалите привязку [(ngModel)]
, и вы увидите, что привязка [checked]
работает просто отлично.
Поскольку ваше свойство value
является строкой со значением 'false'
или 'true'
, привязка [(ngModel)]
в обоих случаях оценивает это как истинное.
В идеале ваше value
свойство будет boolean
.Почему это должна быть строка?
С таким свойством, как boolean
, можно даже избавиться от привязки [checked]
, например, так:
<div *ngIf="agent.attributes[i].type == 'Boolean'">
<mat-slide-toggle [(ngModel)]="agent.attributes[i].value">{{agent.attributes[i].value}}</mat-slide-toggle>
</div>
Если это необходимобыть типа string
, тогда вы можете использовать метод получения / установки в вашем компоненте, как в этом Stackblitz .