8
votes

The current drop-down box has width greater than the the width of the line:
enter image description here

Is there a way to get rid of the extra width?
enter image description here

Here is my current code:

html:

<mat-form-field>
    <mat-select disableOptionCentering placeholder="Choose an option">
      <mat-option [value]="option" *ngFor="let option of my_list">
          {{ option }}
      </mat-option>
    </mat-select>
</mat-form-field>


my_list:

export const my_list: string[] = [ "a", "b", "c", "d"];


style.css:

.mat-select-panel{
    margin-left: 15px;
    margin-top: 28px;
}
5
Hi RikG93, I don't think two posts are talking about the same thing. Here I want to reduce the width of the scrollable panel. The answer in the link provides a solution to load more when scrolling down in the scrollable panel. - Meng
Did you ever figure this out? I am trying to do the same. - cheesydoritosandkale
This is till a bug but here is a work around i found: github.com/angular/components/issues/14515 - Vlad
Did you try adding a class to the form container and set its width? - Jay Ordway

5 Answers

4
votes

For anyone still trying to figure out without making the actual select smaller or wider.

The mat-select-panel uses 100% of the mat-select width plus 32px

min-width: calc(100% + 32px)

You can override this styling with ng-deep:

::ng-deep .mat-select-panel {
    min-width: 100% !important;
}
2
votes

Try this and change width:

   <mat-select style="width:10px">
2
votes

Try this

.mat-select-panel:not([class*=mat-elevation-z]){ min-width: calc(100% + 0px) !important; }

2
votes

set width at mat-form-field tag level. try this,

<mat-form-field style="width:50px">
0
votes

\add class to mat-form-field tag

\and write style to that class

.input-container {
  width: 100%;
  \\  enter code here
}