2016-06-02 5 views
1

Ich bin md-autocomplete von Angular Material: hereAngular Material - md-Autocomplete Dropdown Breite

Es scheint, die Breite der Drop-Down mit der Breite des Eingabefeldes geht. Wenn der Text eines Artikels zu lang ist, gibt es ellipsis.

Ich möchte jedoch den vollständigen Text eines Elements anzeigen, während die Breite des Eingabefeldes relativ kurz bleibt. Das heißt, die Dropdown-Breite sollte mit ihrem Inhalt erweitert werden.

Ich habe versucht, die Stile von md-autocomplete 's Elemente zu überprüfen, konnte aber keinen Stil finden, der den Trick tut. Irgendeine Idee?

EDIT:

Hier sind der Stil, den ich mit endete:

.md-autocomplete-suggestions-container{ 
    overflow-y:scroll 
} 

.md-autocomplete-suggestions-container .md-virtual-repeat-scroller{ 
    position:static 
} 

.md-autocomplete-suggestions-container .md-virtual-repeat-sizer{ 
    height:0 !important 
} 

.md-autocomplete-suggestions-container .md-virtual-repeat-offsetter{ 
    position:static 
} 

Allerdings gibt es noch ein Problem. Die overflow-y:scroll zeigt immer die vertikale Bildlaufleiste, auch wenn sie nicht benötigt wird. Wenn ich es in overflow-y:auto ändere, wird die vertikale Bildlaufleiste, wenn vorhanden, ellipsis erstellen. Wie löse ich das?

+0

Können Sie den Code auf Plunkr teilen? –

Antwort

1

Sie können CSS verwenden, um md-virtual-repeat-container zu stylen.

aber das würde Stil jede Instanz von md-virtual-repeat-container, die Sie auf Ihrer Website haben können (dh md-autocomplete und md-virtual-repeat).

Leider gibt es im Moment keine Möglichkeit einzelne md-Autocomplete-Dropdowns anzupassen. Ich habe eine ticket and pull request erstellt, um dieses Problem hoffentlich zu lösen. Daumen drücken, dass dies in einer der zukünftigen Versionen von Angular Material enthalten sein wird.

Viel Glück!

+0

Danke. Bitte sehen Sie meine Bearbeitung der ursprünglichen Frage. Ich habe jetzt ein anderes Problem. – Shawn

+0

Sie können 'width' und' max-width' für 'md-virtual-repeat-container' anpassen, aber es passt sich nicht automatisch an die Ergebnisliste an, da alle untergeordneten Elemente auf' position: absolute' gesetzt sind. Am einfachsten ist es, Breite und Breite auf einen gewünschten Prozentsatz zu setzen und "Links" einzustellen, um die Ergebnisse zu zentrieren. Ich würde nicht empfehlen, die CSS zu den restlichen Kindern Elemente zu überschreiben, wie es speziell geschrieben wurde, um auf eine bestimmte Weise zu schauen und zu arbeiten. Wenn Sie vollständige Anpassung benötigen, würde ich empfehlen, erstellen Sie Ihre eigenen benutzerdefinierten Anweisung, um genau das zu bekommen, was Sie suchen. –

3

Sie müssen Klasse auf Ihrem md-autocomplete Element festlegen, so dass Sie es in CSS zielen können. Sehen Sie dieses Beispiel

<md-autocomplete class="autocompletable" 
       md-min-length="0" 
       ... 
       placeholder="US State?" 
       md-menu-class="autocompletable-contents"> 
       <md-item-template> 
       <table> 
        <tr> 
         <td><span md-highlight-text="ctrl.searchText" 
          md-highlight-flags="^i">{{item.ok}}</span> 
         </td><td>Foo</td> 
        </tr> 
       </table> 
       </md-item-template> 
       <md-not-found> 
       No states matching "{{ctrl.searchText}}" were found. 
       <a ng-click="ctrl.newState(ctrl.searchText)">Create a new one!</a> 
       </md-not-found> 
      </md-autocomplete> 

Und dann in CSS brauchen Sie dieses

md-autocomplete.autocompletable{ width: 200px; } 
    .autocompletable-contents{ } 

EDITS tun: Getestet mit Materialien 1.0.9