2017-02-17 10 views
0

マイAngular2アプリは3つのオプショングループとドロップダウン要素を持っている、それは次のようになります。Angular2ドロップダウン選択要素は、現在の値を表示しない

<select formControlName="reasonCode" id="reasonCode" class="form-control"> 
     <option value="" [ngValue]="null"></option> 
     <option *ngFor="let reason of otherLeavingReasons" [ngValue]="reason.longName"> 
     {{reason.longValue}} 
     </option> 
     <optgroup label="Managed"> 
     <option *ngFor="let reason of managedLeavingReasons" [ngValue]="reason.longName"> 
      {{reason.longValue}} 
     </option> 
     </optgroup> 
     <optgroup label="Unmanaged"> 
     <option *ngFor="let reason of unmanagedLeavingReasons" [ngValue]="reason.longName"> 
      {{reason.longValue}} 
     </option> 
     </optgroup> 
    </select> 

私は位置にオプショングループのそれぞれにこの作品を追加しました現在の値の要素:

[selected]="reason.longValue == eventForm.controls['reasonCode'].value.longValue" 

問題は機能しないということです。私はそれが3つのオプショングループの存在のためだと思う。 そのようなグループを単一のオプショングループに含めることができる他の方法や、おそらく異なるコンポーネントがありますか?

答えて

1

にこのコードを置きます。それは[ngValue]のように思えるし、[selected]は一緒に、または少なくとも私のアプリで使用することはできません。 [ngValue]を削除すると、選択が機能し始めました。 最終的な推奨ソリューションではありませんが、この場合は機能します。最終的な作業コードは次のようになります。

<select formControlName="reasonCode" id="reasonCode" class="form-control" (change)="markTouched('reasonCode')"> 
     <option value=""></option> 
     <option *ngFor="let reason of otherLeavingReasons" [selected]="reason.longValue == eventForm.controls['reasonCode'].value"> 
     {{reason.longValue}} 
     </option> 
     <optgroup label="Managed"> 
     <option *ngFor="let reason of managedLeavingReasons" [selected]="reason.longValue == eventForm.controls['reasonCode'].value"> 
      {{reason.longValue}} 
     </option> 
     </optgroup> 
     <optgroup label="Unmanaged"> 
     <option *ngFor="let reason of unmanagedLeavingReasons" [selected]="reason.longValue == eventForm.controls['reasonCode'].value"> 
      {{reason.longValue}} 
     </option> 
     </optgroup> 
    </select> 
2

ReactiveModuleフォームを使用しています。この形式では、optionごとに[selected]を設定する必要はありません。 [selected]アトリビュートを選択してセットとして追加する必要はありません。ちょうどモデルの値を設定すると、あなたの角度はあなたのUIを更新します。あなたのコードで

は私が試行錯誤の方法で最終的にそれをソートcomponent

this.form.controls['reasonCode'].patchValue("myvalue"); 
+0

まあ、私は同じだと思っていましたが、どういうわけか選択要素はwokではありません。私はそれを通常の入力のために変更すると絶対にうまくいくが、ドロップダウンはしない。これは実際問題を引き起こす唯一のフォーム要素なので、私はある種のより良い置換があると思っていました。 – smoczyna

+0

より良い解決策のためにplunkerで更新できるように、私たちはあなたの問題の大雑把なリンクを提供できますか? –

+0

残念ながら私は私の仕事の一部です。私はここで私の質問を更新することができます。これは、select要素を含むすべてのページにこの問題が存在するため、これはangular2のドロップダウン要素での一般的な問題です。私が持っている別のアイデアは、フォームコントロールとして非表示の入力要素を使用し、次に選択要素と同期させることですが、これを行う方法もありません。 – smoczyna

関連する問題