如何在Angular 2中的[(ngModel)]中获取数字?
<select [(ngModel)]="levelNum">
<option *ngFor="#level of levels" [value]="level.num">{{level.name}}</option>
</select>
levelNum:number;
levels:Array<Object> = [
{num: 0, name: "AA"},
{num: 1, name: "BB"}
];
我尝试在不同的地方添加type="number"
。
<select type="number" [(ngModel)]="levelNum">
<option *ngFor="#level of levels" [value]="level.num">{{level.name}}</option>
</select>
和
<select [(ngModel)]="levelNum">
<option type="number" *ngFor="#level of levels" [value]="level.num">{{level.name}}</option>
</select>
但是当我选择一个新项目时,levelNum
仍然会成为一个字符串。
答案 0 :(得分:7)
使用对象时,Angular2中带有* ngFor的选择似乎无法正常工作。他们已在github中解决了这个问题,但仍未解决。
在修复之前,我会做一些事情,比如每当选择值改变时将字符串值更改为数字。
@Component({
selector: 'my-app',
template:`
<h1>Selecting Number</h1>
<select type="number" [(ngModel)]="levelNum" (ngModelChange)="toNumber()">
<option *ngFor="#level of levels" [value]="level.num">{{level.name}}</option>
</select>
{{levelNum}}
`,
})
export class AppComponent {
levelNum:number;
levels:Array<Object> = [
{num: 0, name: "AA"},
{num: 1, name: "BB"}
];
toNumber(){
this.levelNum = +this.levelNum;
console.log(this.levelNum);
}
}
答案 1 :(得分:0)
我认为最简单的解决方案是在需要使用它时将其转换为数字...简单+this.levelNum
即可。 http://plnkr.co/edit/SxQfNlUB4RNdo2OndM9o