2016-09-13 3 views
8

내가 같은 다른 선택과 형태가 int로. 불행하게도 최대한 빨리 속성이 문자열로 캐스팅 선택의 값의 변화에 ​​따라 :각도 2 캐스트를 선택 값은

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

표준 <input>의 경우를 나는 type="number"를 사용할 수 있지만 <select> 위해 나는 우둔입니다.

각도 2로 데이터를 int로 강제 변환하는 방법이 있습니까?

+0

당신이'formChanged()'방법을 보여 주시겠습니까? – micronyks

+0

ng-options를 사용하십시오. 중첩 된 옵션을 사용하면 모델이 항상 문자열로 설정됩니다. 그것이 문서화되어 있습니다. –

+0

ng-option은 Angular2에 없습니다. 아마도 [value] 대신 [ngValue]를 사용하는 것일 수도 있습니다. – abreneliere

답변

26

사용 [ngValue] 대신 "값"의 :

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

정답이어야합니다. – sgotre

+1

작품과 각도에서 예상대로 간단합니다. – Algis

+1

매력처럼 작동합니다. 드워프 족장이 만든다. 내가 무슨 뜻인지 알지. –

1

아니요, 슬프게도 select에서 항상 문자열을 가져 오기 때문에 슬프게도 formChanged() 메서드에서 직접 구문 분석해야합니다.

이 같은 뭔가를 시도해 볼 수도 있습니다 :

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

당신이 (당신은 아직 제공하지 않은 경우) formChanged() 방법 내에서 캐스팅합니다. 다음과 같이 당신은

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

각도를 자동으로 파싱하도록 말할 수 있기를 바랬습니다. 그러나 formChanged()를 사용하면 실제로 트릭을 수행 할 수 있습니다. – grunk

+0

확인 했습니까? 그렇지 않습니까? – micronyks

+0

내가 한 일 : this.selected.myKey = Number (this.selected.myKey); – grunk

0

당신이 선택하고 그 선택 요소에 대한 값을 지정하는 숫자 변수를 보낼 수 + 기호를 사용해야합니다. 그런 다음 값이 변경 될 때 값을 캡처하려면 이벤트를 추가 (변경)하여 아래 표시된 값을 선택하고 검색 할 수 있습니다.

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

} 

당신은 http://plnkr.co/edit/xO2mrTdpTGufkgXqdhYD?p=preview에서 예를 볼 수 있습니다