2017-10-19 12 views
-1

コンポーネントクラスのドロップダウンリストから選択した値を使用します。 ドロップダウンから値を選択すると、この値がngModelを使用して保存されますが機能しません。別のアプローチ、つまりイベント関数をトリガーして、選択した値をパラメータとして渡しましたが、この方法も機能しません。私は、出力コンソール上で選択した値を、それは表示されませんドロップダウンリストで選択した値が機能しない角度

<select [(ngModel)]="selectedControl" class="form-control" (click)="onSelection($event)"> 
      <option *ngFor="let control of controlArray; let i=index" 
      [value]="control">{{controlArray[i].name}}</option>            
</select> 

、ここではコンポーネントのクラスコードは次のとおりです。

onSelection(control){ 
    console.log(typeof(control)) 
    console.log(control.target.value) 
    } 

助けてください。

<select [(ngModel)]="selectedControl" class="form-control" (change)="onSelection()"> 
    <option *ngFor="let control of controlArray; let i=index" 
      [ngValue]="control">{{controlArray[i].name}}</option> 
</select> 

はまた、あなたが現在選択されている値のためselectedControlをチェックする必要があります:

+0

選択した値は記録されません。メソッドに渡されたイベント($ event)を記録します。メソッドにイベントを渡さず、単に 'this.selectedControl'をログに記録してください。これはngModelにバインドされているためです。また、イベントは(クリック)ではなく、(変更)である必要があります。 –

+0

私も前にこのソリューションを試しましたが、this.selectedControl "[object Object]"が選択された値ではなく出力に表示されます。 –

+3

ネイティブ属性は文字列のみを使用するため、 '[value]'ではなく '[ngValue]'にバインドする必要があります。 – rinukkusu

答えて

0

あなたはchangeイベント、ないclickを使用する必要があります。

onSelection(){ 
    console.log(this.selectedControl) 
} 

最後の事 - あなたはこのようにそれを行うか、代わりにngValueを使用したい場合は、あなたがそこにスカラー値を入れる必要があります。

+0

私は概念的にはあまり明確ではないが、このコンセプトのいくつかのデータリンクを参照してください。 - –

+0

正確にはどういう意味ですか?イベントとイベントをクリックしますか?またはngValue? –

+0

ngValueと値のバインディングの間に明確ではない。 –

関連する問題