2016-02-18 12 views
6

Jak uzyskać liczbę w [(ngModel)] w Angular 2?Jak uzyskać liczbę w [(ngModel)] w Angular 2?

<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"} 
]; 

Próbowałem dodać type="number" w różnych miejscach.

<select type="number" [(ngModel)]="levelNum"> 
    <option *ngFor="#level of levels" [value]="level.num">{{level.name}}</option> 
</select> 

i

<select [(ngModel)]="levelNum"> 
    <option type="number" *ngFor="#level of levels" [value]="level.num">{{level.name}}</option> 
</select> 

Ale kiedy wybrać nową pozycję, levelNum wciąż staje się łańcuch.

+1

Co się stanie, jeśli zdefiniujesz interfejs i użyjesz go zamiast obiektu, gdzie num jest typem liczbowym? –

+0

@DavidL Rzeczywiście mam 'interfejs Poziom {numer: numer, nazwa: ciąg}', ale wciąż ten sam –

+0

@HongboMiao tutaj jest taki sam [SO pytanie] (http://stackoverflow.com/q/33181936/2435473) bez pomocnej odpowiedzi –

Odpowiedz

7

Opcja z * ngFor w Angular2 wydaje się nie działać poprawnie podczas używania obiektów. Zostało otwarte w numerze github, ale nadal nie zostało rozwiązane.

Dopóki to nie zostanie naprawione, zrobię coś w rodzaju zmiany wartości ciągu na liczbę za każdym razem, gdy zmieni się wartość wyboru.

@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); 
    } 
} 
+0

dzięki, niezła sztuczka! –

+0

Dla tablic wystarczy użyć: this.list = this.list.map (Number); – Rookian

Powiązane problemy