我的病情总是失败:
this.category.ageCategory !== 5
如果我使用!==
更改!=
,则可以使用
我的类别对象:
export class Category {
id: number;
name: string;
ageCategory: number;
...
}
我的表格:
<select class="form-control" name="ageCategory" id="ageCategory" [(ngModel)]="category.ageCategory">
<option *ngFor="let ageCat of ageCategories" [value]="ageCat.id">
{{ageCat.text | translate }}
</option>
</select>
事实上,如果我调试,我可以看到ageCategory
是一个字符串"5"
为什么ageCategory是一个字符串?
我应该将parseInt
用于所有变量:(
答案 0 :(得分:2)
您可以将ngValue
用于此目的。它允许您在模型绑定时指定不字符串的值。在您的示例中,您需要更改的内容如下:
<option *ngFor="let ageCat of ageCategories" [ngValue]="ageCat.id">
{{ageCat.text | translate }}
</option>
它就像从[value]
更改为[ngValue]
一样简单,并为您提供您正在寻找的结果。
答案 1 :(得分:1)
为了使其工作,用引号将其括起来,因为它是一个字符串
this.category.ageCategory !== "0"
答案 2 :(得分:1)
选择它时,应将其转换为数字。像下面这样的东西
<select class="form-control" name="ageCategory" id="ageCategory" [(ngModel)]="category.ageCategory" (ngModelChange)="onChangeSelection($event)">
<option *ngFor="let ageCat of ageCategories" [value]="ageCat.id">
{{ageCat.text | translate }}
</option>
</select>
在你的组件中:
onChangeSelection(ageCategory) {
this.category.ageCategory = parseInt(ageCategory);
}
<强>更新强>
选择标记始终以字符串形式输出,因此您需要将其转换为数字供您使用。当您选择上述方法或将其与字符串化数字进行比较时,或者正确的方式。