angularautocompletematerial-design

Change the mat-autocomplete width?


It seems like the <mat-autocomplete> width is always the width of the input we're typing in. Is there no way to make it larger? I have a very small input and can't read the dropdown items. I'm also limited in form space so can't make the input larger.

<mat-form-field style="width: 100px;">
  <input matInput [matAutocomplete]="auto">
  <mat-autocomplete style="width: 500px;" #auto="matAutocomplete">
    <mat-option *ngFor="let item of items" [value]="item">
    </mat-option>
  </mat-autocomplete>
</mat-form-field>

Solution

  • In the document for MatAutocomplete there is a property for exactly what you need:

    @Input() panelWidth: string | number

    Specify the width of the autocomplete panel. Can be any CSS sizing value, otherwise it will match the width of its host.

    By using this property you are not in the risk of meddling with anything else inherited from cdk-overlay-pane.

    For further customization you might find this property useful as well:

    @Input('class') classList: string

    Takes classes set on the host mat-autocomplete element and applies them to the panel inside the overlay container to allow for easy styling.