如何将复选框设置为条件检查

时间:2018-01-06 18:26:27

标签: javascript html angular

我有一个JSON,其中一些字段是布尔值,但不幸的是它们的值不是1/0或者是真/假。 而不是他们有价值观" Y" /" N"我很挣扎。

我试图根据以下条件设置检查属性:

[checked]="myobj.isdeleted == 'Y' ? true : false"
[attr.checked]="myobj.isdeleted == 'Y' ? true : false"

[checked]="myobj.isdeleted == 'Y' ? true : null"
[attr.checked]="myobj.isdeleted == 'Y' ? true : null"

但它们都不起作用。 任何想法如何实现?

完整加价:

<input type="checkbox" name="isdeleted"  [checked]="myobj.isdeleted=='T' ? true : false" id="isdeleted" [(ngModel)]="myobj.isdeleted">

1 个答案:

答案 0 :(得分:2)

您可以在组件类中编写属性:

public get isObjectDeleted(): boolean {
    return this.myobj.isdeleted === "Y";
}
public set isObjectDeleted(value: boolean) {
    this.myobj.isdeleted = value ? "Y" : "N";
}

并将该属性用于ngModel,如 this stackblitz 所示:

<input type="checkbox" [(ngModel)]="isObjectDeleted" name="isdeleted" id="isdeleted" />

如果您想将属性的名称(例如isdeleted)作为参数传递,则可以单独使用[ngModel](ngModelChange)

<input type="checkbox" [ngModel]="isChecked('prop1')" (ngModelChange)="setChecked('prop1', $event)" name="prop1" />

使用组件类中定义的两个公共方法:

public isChecked(propName: string): boolean {
    return this.myobj[propName] === "Y";
}
public setChecked(propName: string, value: boolean): void {
    this.myobj[propName] = value ? "Y" : "N";
}