複数選択の html 要素を ngModel にバインドする際に問題が発生しています。フォームを送信すると、選択した複数のラベルから選択したラベルが 1 つだけ取得されます。選択したすべての値をバインドし、フォームが送信されたときにそれらの値を返す方法が必要です
以下のシナリオを試しました
1)
<select multiple ([ngModel])="multiSelect1" ngControl="multiSelect1" (change)="multiSelect1=setSelected($event)">
<option value="1" id="1">Value1</option>
<option value="2" id="2">Value2</option>
<option value="3" id="3">Value3</option>
<option value="4" id="4">Value4</option>
</select>
setSelected($event): String{
console.log($event.target.selectedOptions);
let values = [].slice.call($event.target.selectedOptions).map(a => a.value);
return values.toString();
}
上記のコードでは、変更イベントがトリガーされていても、multiSelect1 は更新されません。フォームを送信すると、出力が2になります
2)ここでは、同じ出力を取得する変更を使用していません。選択したラベルの最初のオプションのみが表示されています
<select multiple ([ngModel])="multiSelect1" ngControl="multiSelect1">
<option value="1" id="1">Value1</option>
<option value="2" id="2">Value2</option>
<option value="3" id="3">Value3</option>
<option value="4" id="4">Value4</option>
</select>
Angular バージョン2.0.0-beta.15 の使用
setSelected が何らかの値を返すかどうかを知りたいのですが、その値は ngModel にバインドされますが、バインドされていません。
フォームが送信されたときに、選択したすべてのオプションをポストにバインドして取得する方法を探しています。