Я пытаюсь создать панель инструментов, используя mat-toolbar
Материала с вводом и выбрать внутри него. Для обоих я использую предоставленные Материалом компоненты (mat-input
и mat-select
соответственно) внутри mat-form-field
с, как рекомендовано. Мой код выглядит так:
<mat-toolbar>
<mat-form-field appearance="outline">
<mat-icon matPrefix>search</mat-icon>
<input type="search" matInput placeholder="Search" />
</mat-form-field>
<mat-form-field appearance="outline">
<mat-select [(value)]="omitted">
<mat-option *ngFor="let omitted of omitted" [value]="omitted.slug">
{{ omitted.name }}
</mat-option>
</mat-select>
</mat-form-field>
</mat-toolbar>
В данный момент, ввод и выбор слишком высоки, чтобы полностью поместиться на панели инструментов. Я пытаюсь оформить их так, чтобы они подходили (уменьшив height
, padding
, margin
и т. Д. c.). Однако Angular добавляет элементы между mat-form-field
и содержащимися элементами. Я не могу стилизовать эти элементы из Sass компонента из-за инкапсуляции вида. Таким образом, даже если я стилизую все, что непосредственно присутствует в моем шаблоне, сгенерированные элементы имеют высоты, поля и отступы, которые вынуждают наблюдаемый элемент находиться за пределами панели инструментов.
Я не хочу включать глобальные стиль для этих компонентов, потому что я не хочу, чтобы другие mat-form-field
были затронуты.
Отключение инкапсуляции вида по сути было бы то же самое, что и использование глобального стиля.
::ng-deep
устарела, поэтому я не могу это использовать.
Я мог бы создавать собственные input
и select
с нуля, но потом я теряю готовые стили, которые предоставляет Material. Можно ли как-нибудь стилизовать эти компоненты материала, чтобы они поместились на моей панели инструментов?