Angular中的字符串和数字被误解

时间:2018-12-27 11:14:50

标签: javascript angular

我有一个实体:

export class Item {
  name: string;
  value: number;
}

和模拟类:

export const ITEMS: Item[] = [
  {
    name: 'Локальный сервер',
    value: 1
  },
  {
    name: 'Удаленный сервер',
    value: 2
  }
];

在我的模板中:

<li class="list-group-item"  *ngFor="let item of itemsList">
                  <input type="radio" [(ngModel)]="radioSelected" name="list_name" value="{{item.value}}" (change)="onItemChange(item)"/> {{item.name}}
                </li>

在我的控制器中:

onItemChange(item) {
    this.getSelecteditem();
  }

  getSelecteditem() {
    this.radioSel = ITEMS.find(Item => Item.value === parseInt(this.radioSelected.toString(), 10));
  }

我不喜欢这部分: parseInt(this.radioSelected.toString(),但只有 this.radioSelected 而没有 parseInt 和< em> .toString 不起作用,为什么呢?我想传递并获取一个数字,而不是一个字符串!我该怎么办?

1 个答案:

答案 0 :(得分:3)

您可以尝试传递所选项目的值吗?

onItemChange(item: ITEM) {
   this.getSelecteditem(item); // pass in the item here
}

然后根据该商品的值查找该商品:

getSelecteditem(item: ITEM) {
    this.radioSel = ITEMS.find(Item => Item.value === item.value); // compare against the param passed in
}

我也建议您像以前一样使用键入内容,这将更加轻松有趣:)