使用复选框更改 ngModel 值

change ngModel value with checkbox

美好的一天..我有这段代码,我需要发送角色..但是当我select复选框时,ngModel 更改为 True 或 False,这就是发送到数据库的内容..我该如何解决?

<mdl-checkbox class="mdl-textfield--full-width" *ngFor="let role of roles; let i = index"
[(ngModel)]="user.roles[i] " name="ckb{{i}}">
{{role.name}}
</mdl-checkbox>

只有模板很难说。但是,如果您要发送给用户,则可能是您正在覆盖数据,因为您在复选框上使用了 [(ngModel)]="user.roles[i]",因此您正在通过单击复选框来更改该值。您可以通过 role.isChecked 在角色数组上创建一个项目。然后你可以存储检查状态。

我建议更改您的对象。

public class Role {
    id: number;
    name: string;
    enabled: boolean;
}

<mdl-checkbox class="mdl-textfield--full-width" *ngFor="let role of roles; let i = index" [(ngModel)]="user.roles[i].Enabled" name="ckb{{i}}">
    {{role.name}}
</mdl-checkbox>

也许您可以在 change 事件中设置用户角色?就像 (change)="userRoles[i] = role" 仅使用 Angular 的示例 plunkr:

https://plnkr.co/edit/erIQNgk6u1JxOc6zCoHW?p=preview