私はオブジェクトの配列からフォーム内の選択要素を構築しています。現在のオブジェクトの属性(myobject.is_default
)に基づいてオプションの1つを選択します。角2:条件に基づいて選択する選択肢をどのようにするか?
基本的なテンプレートコードは次のようになります。私は今、このような選択オプションを設定することができ
<select formControlName="template">
<option *ngFor="let t of templates" [value]="t.id">{{t.title}}</option>
</select>
:
<select formControlName="template">
<option *ngFor="let t of templates" [value]="t.id" [selected]="t.is_default ? 'selected' : ''">{{t.title}}</option>
</select>
しかし、私がいる問題は、どの状態HTML5の仕様であります:
選択された属性はブール値属性です。
http://www.w3.org/TR/html5/infrastructure.html#boolean-attributes:
要素にブール属性の存在が真 値を示し、属性が存在しないことは、偽の値を表します。
属性が存在する場合、その値はなし先頭または末尾に空白で、空の文字列 または属性の 正規名のASCII大文字と小文字を区別しない一致する値のいずれかでなければなりません。
次は、有効な同等と真である:
<option selected />
<option selected="" />
<option selected="selected" />
<option selected="SeLeCtEd" />
次無効です。
<option selected="0" />
<option selected="1" />
<option selected="false" />
<option selected="true" />
意味する:とすぐに選択した属性が存在しているとして、オプションが選択されています。だから、私はselected
を1つ以外のオプションで持たない方法が必要です。
同じ要素にngFor
と一緒に使用することはできませんので、ngIf
は使用できません。
これは動作しますが、それは意味的に間違っている、角度のいずれかの形式を主な目的は、モデルデータからフォームデータを分離することであり、あなたはngModelを使用してこれをやっていません – Nickolaus
@Nickolausはヒントのおかげで感謝しましたが、私は建築の教訓を与えるつもりはなく、何が欠けているかを指摘して動作させるつもりはありません。 –
@GünterZöchbauer - おそらく、これは正しいアプローチではないと言ってあなたの答えを更新することができますが、質問された質問に答えます。あなたがそれを知っているなら正しいアプローチを加えることも良いでしょう –