选项标记返回Angular中ngModel的字符串值而不是数字

Rav*_*mar 6 html javascript angular

HTML:

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

payCode:

[{"ID":0,"value":"Cycle"},{"ID":1,"value":"Truck"},{"ID":2,"value":"Car"}]
Run Code Online (Sandbox Code Playgroud)

i.PaycodeId,通过ngModel,它将数字设置为字符串值而不是数字,"1"/"2"而传递给选择的值是具有ID值作为数字的对象.我希望这个值只是数字.

Asa*_*nel 13

而不是使用[value],使用[ngValue].

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

  • 我不知道为什么这没有标记为正确答案,解决了解析 modelChange 事件上的值的问题。 (2认同)

rin*_*usu 5

您可以像这样将绑定分开:

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

在您的组件中:

onChangeSelection(selected) {
    this.i.PaycodeId = parseInt(selected);
}
Run Code Online (Sandbox Code Playgroud)

工作柱塞示例用法