this.category.ageCategory!== 0因类型而返回false

时间:2018-06-13 09:35:41

标签: angular typescript

我的病情总是失败:

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用于所有变量:(

3 个答案:

答案 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);
}

<强>更新

选择标记始终以字符串形式输出,因此您需要将其转换为数字供您使用。当您选择上述方法或将其与字符串化数字进行比较时,或者正确的方式。