2016-09-13 31 views
8

ben gibi farklı seçer sahip bir form var int. Maalesef en kısa sürede nitelik bir dizeye döküm seçme değerini değiştirdikçe:Açısal 2 dökme değer seç

{ 
    isConnected : "0", // 0 expected 
} 

standart <input> ben type="number" kullanabilirsiniz ama bir <select> için ben clueless değilim.

Verileri int olarak yapmak için açısal 2'yi zorlamanın bir yolu var mı?

+0

Eğer 'formChanged()' yöntemini göstermek lütfen? – micronyks

+0

ng seçeneklerini kullanın. Yuvalanmış seçeneği kullanmak modeli her zaman bir dize olarak ayarlayacaktır. Bu belgelendi. –

+0

ng-seçeneği Angular2'de mevcut değil. Belki de [value] yerine [ngValue] kulanmayı kastediyorsunuzdur. – abreneliere

cevap

26

kullanın [ngValue] yerine "değer":

<select [(ngModel)]="selected.isConnected" id="etat"> 
    <option [ngValue]="0">Not connected</option> 
    <option [ngValue]="1">Connected</option> 
</select> 
+6

Doğru cevap bu olmalı. – sgotre

+1

İşler ve açısaldan bekleneceği kadar basit. – Algis

+1

Bir çekicilik gibi çalışır. Bir cüce warlock tarafından hazırlanmış. Ne demek istediğimi biliyorsun... –

1

Hayır, ne yazık ki her zaman select'dan bir dize aldığınız için formChanged() yönteminde kendi başınıza ayrıştırmaya zorlandınız.

Böyle bir şeyle deneyebilirsiniz:

formChanged(): void { 
    selected.isConnected = parseInt(selected.isConnected); 
    // ... 
} 
2

Eğer (henüz sağlamadıysanız) formChanged() yöntemi içinde döküm istiyorum. aşağıda gösterildiği gibi

formChanged(): void { 
    selected.isConnected = +selected.isConnected; 
    ... 
} 
+0

Köşeyi otomatik olarak ayrıştırması gerektiğini söylemeyi umuyordum. Ancak formChanged() kullanarak gerçekten – grunk

+0

hile yapabilir misiniz? işe yaramıyor mu? – micronyks

+0

Ne yaptım: this.selected.myKey = Number (this.selected.myKey); – grunk

0

seçebilir ve bu seçme elemanı için değer atamak için bir Sayı değişken gönderebilir, + simgesini kullanmalıdır. Ardından, değeri değiştirdiğinde değeri yakalamak istiyorsanız, aşağıda gösterildiği gibi değeri seçmek ve almak için (değiştir) olayı ekleyebilirsiniz.

import { Component } from '@angular/core'; 

@Component({ 
    selector: 'my-app', 
    template: `<select value="{{isConnected}}" (change)="printConnected($event.target.value)" name="etat" id="etat" class="form-control"> 
      <option value="0">Not connected</option> 
      <option value="1">Connected</option> 
     </select> 
     <div *ngIf="changed">You've selected {{isConnected}}<div>` 
}) 
export class AppComponent { 

    isConnected : number = 1; 
    changed : boolean = false; 
    printConnected(value){ 
this.isConnected = value; 
this.changed=true; 
    } 

} 

Sen http://plnkr.co/edit/xO2mrTdpTGufkgXqdhYD?p=preview de bir örnek görebilirsiniz