LoginSignup
11
5

More than 5 years have passed since last update.

[Angular] select ボックスで ngModel を使う場合に、初期表示を「選択してください(かつdisable)」にしたい。

Last updated at Posted at 2018-07-05

select で 初期表示を disabled だけど選択された状態にしたい時ってありますよね。

普通の HTML なら、 selected という Attribute(属性)をつけると選んでくれます。

ただ、 ngModel を使う場合、選択状態は、モデルの値により変わるので、 selected は効きません。

サンプルコード

<select [(ngModel)]="test">
    <option disabled="disabled" selected>選択してください</option>
    <option [value]="'test1'">ひとつめ</option>
    <option [value]="'test2'">ふたつめ</option>
</select>

上記のようなコードは、

スクリーンショット 2018-06-27 20.59.46.png

こうなって

スクリーンショット 2018-06-27 21.00.46.png

こうなります。

本当は、こう↓なってほしい!

スクリーンショット 2018-06-27 21.03.15.png

スクリーンショット 2018-06-27 21.03.43.png

解決方法

この現象の原因は、 ngModel により、 ngModel の状態の option を選択するためです。
なので、下記のようにしてあげれば動きます。(最初に初期化して undefined を入れている場合)

<select [(ngModel)]="test">
    <option disabled="disabled" [value]="undefined">選択してください</option>
    <option [value]="'test1'">ひとつめ</option>
    <option [value]="'test2'">ふたつめ</option>
</select>

簡単ですね。

11
5
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
5