2017-08-22 50 views
0

Ich habe den folgenden Code:HTML Auswahl wählt automatisch ersten Eintrag

<select #typ class="input" (change)="changeIndex(typ.value)"> 
     <option *ngFor="let creation of creationComponent>{{creation.name}}</option> 
    </select> 

Wenn ich die Anwendung die Auswahl starten die erste Option automatisch ausgewählt hat. Aber das will ich nicht. Warum ist das und wie kann ich es beheben?

+0

Versuchen Sie, eine Klausel für das Attribut Schreiben ausgewählt – Dalibor

+0

A wählen muss habe eine ausgewählte Option. Wenn Sie mit dem Attribut 'selected' nicht explizit eines festlegen, wird das erste Attribut verwendet. – Turnip

+0

Add

Antwort

2

eine bessere Antwort hier gefunden: https://stackoverflow.com/a/13492609/5039495

Wir verwenden selected, disabled und hidden auf der Standard-Option, das ist von Safari anerkannt.

<select> 
 
    <option selected disabled hidden></option> 
 
    <option>1</option> 
 
    <option>2</option> 
 
</select>


Veraltete

Der Trick ist, mit display:none eine leere Option einstellen.

<select> 
 
    <option style="display:none"></option> 
 
    <option>1</option> 
 
    <option>2</option> 
 
</select>

Warnung: Wie von anderen Benutzern gemeldet, diese Lösung funktioniert nicht in Safari und iOS Safari

+0

Vielen Dank! Das ist eine sehr gute Idee und funktioniert! –

+1

Bevor Sie zu aufgeregt werden, funktioniert dies nicht in Safari oder iOS Safari – Turnip

+0

@OnLearn Funktioniert nicht. LoL. https://i.imgur.com/eyNATKd.png –

0

Dies ist eine gemeinsame Sache ... Fügen Sie einfach eine leere <option> als erstes:

<select #typ class="input" (change)="changeIndex(typ.value)"> 
    <option></option> 
    <option *ngFor="let creation of creationComponent>{{creation.name}}</option> 
</select> 

Sie nichts nicht ausgewählten einen <select> Tag haben kann. Dies sollte es beheben. Zitieren von Turnipcomment: Eine Auswahl muss eine ausgewählte Option haben. Wenn Sie mit dem ausgewählten Attribut nicht explizit eines festlegen, wird das erste verwendet. Für eine bessere Version können Sie den folgenden Code mit selected Attribute verwenden:

<select #typ class="input" (change)="changeIndex(typ.value)"> 
    <option selected="selected" value=""></option> 
    <option *ngFor="let creation of creationComponent>{{creation.name}}</option> 
</select> 
+1

Natürlich dachte ich darüber nach. Aber ich möchte nicht, dass es eine Option ist, "" zu wählen. Wenn es eine andere Möglichkeit gibt, lassen Sie es mich bitte wissen, sonst muss ich das tun, aber ich wusste diese Lösung sowieso. Aber danke für die Antwort! Und nein, nicht der erste wird allgemein ausgewählt. Es ist nur, wenn es den #typ und den (ändern) -Event gibt. Ansonsten ist nichts ausgewählt. –

Verwandte Themen