Возможно, есть лучший способ сделать это, но просто используя CSS, вы можете сделать это следующим образом
::ng-deep .cdk-overlay-pane
{
min-width: auto !important;
}
::ng-deep .cdk-overlay-container
{
display:inline-block;
}
::ng-deep .ng-animating .mat-option {
margin-right: -32px;
}
Демонстрация Stackblitz
Редактировать
На самом деле это проблема: оверлейный контейнер является общим для компонентов материала.Поэтому, если вы создадите стиль, как указано выше, правила CSS будут применяться ко всем выбранным компонентам.Кроме того, оверлейный контейнер находится вне самого компонента, поэтому вы не можете ограничить правило с помощью селектора верхнего уровня, например :host
.
. Я создал пример, который добавляет / удаляет пользовательский класс в / изналожение, чтобы стили не просачивались в другие выбранные компоненты.
Это что-то вроде хака, и они могут быть лучшими решениями (возможно, если вы создадите свое собственное наложение)
Это все равно не работает идеально, когда вы открываете / закрываете выделенный элемент
Демонстрация Stackblitz