我有一个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">
答案 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";
}