【问题标题】:option tag returning string value instead of number for ngModel in AngularAngular中ngModel的选项标签返回字符串值而不是数字
【发布时间】:2016-10-21 15:42:27
【问题描述】:

HTML:

<select [(ngModel)]='i.PaycodeId'>
  <option *ngFor="let j of payCode" [value]='j.ID'>{{j.value}}</option>
</select>

支付代码:

[{"ID":0,"value":"Cycle"},{"ID":1,"value":"Truck"},{"ID":2,"value":"Car"}]

i.PaycodeIdngModel 中,它将数字设置为字符串值,而不是像"1"/"2" 这样的数字,而传递给select 的值是ID 值为数字的对象。 我只希望这个值为 number

【问题讨论】:

  • 类中i.PaycodeId的类型是什么?
  • 很抱歉。 &lt;tr *ngFor='let i of bonusArray'&gt; 其中 bonusArray 是包含数字类型值“Paycode”的数组或对象。我在 bonusArray 数组的帮助下创建一个表,下拉列表是它的列项之一。现在我包含一个对象,它的属性之一是“PaycodeId”,它的类型是数字。但是,当我从下拉列表中选择某些内容时,它会返回我的字符串而不是数字,正如您在我的原始帖子中看到的那样。

标签: javascript html angular


【解决方案1】:

不要使用 [value],而是使用 [ngValue]。

<select [(ngModel)]='i.PaycodeId'>
  <option *ngFor="let j of payCode" [ngValue]='j.ID'>{{j.value}}</option>
</select>

【讨论】:

  • 不知道为什么这个没有标记为正确答案,解决了modelChange事件解析值的问题。
  • ngValue 有效,应标记此正确答案
  • 这适用于我使用反应形式..所以不需要 onChange 调整!赞成。
  • 就我而言,它没有帮助。不知道为什么。
  • 真的很好,应该标记为正确答案!
【解决方案2】:

请查看下方的Asaf Hananel's answer - 这可能就是您要找的内容。


你可以像这样分开绑定:

<select [ngModel]="i.PaycodeId" (ngModelChange)="onChangeSelection($event)">
  <option *ngFor="let j of payCode" [value]='j.ID'>{{j.value}}</option>
</select>

在你的组件中:

onChangeSelection(selected) {
    this.i.PaycodeId = parseInt(selected);
}

以工作Plunker为例使用

【讨论】:

  • 我以前可以这样做,但我只是想知道是否有任何直接简单的方法。感谢您的解决方案。
  • 这不是逻辑角度团队应该解决这个问题,即使它的类型是数字,选项也必须取值
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-18
  • 2013-08-12
  • 2018-11-16
  • 2016-10-17
  • 2015-10-08
相关资源
最近更新 更多