Я видел, что Материальная команда использует атрибуты типа dense
для списков матов.Таким образом, вы можете иметь глобальную настройку в вашем styles.scss
, например:
.mat-form-field[dense] {
.mat-form-field-flex > .mat-form-field-infix {
padding: 0.4em 0px !important;
}
.mat-form-field-label-wrapper {
top: -1.5em;
}
&.mat-form-field-appearance-outline.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label {
transform: translateY(-1.1em) scale(.75);
}
.mat-form-field-wrapper{
padding-bottom: 0;
}
}
и просто добавить атрибут в ваши поля:
<mat-form-field dense ...
Этот тип атрибутов можно рассматривать как«варианты компонентов», и некоторые методологии CSS предлагают определить класс для него, например, .mat-form-field-dense
, но мне больше нравится подход с атрибутами:)
Редактировать: если вы хотите включить этот тип настройки deep
вДля вашего компонента вам нужно отключить инкапсуляцию, включая:
@Component({
...
encapsulation: ViewEncapsulation.None
})
, который скажет Angular не помечать ваши стили компонентов с помощью атрибута, который инкапсулирует ваши стили для работы только с вашими компонентными компонентами, и не мешает другимкомпоненты подэлементов.Пожалуйста, обратитесь к официальной документации Angular Styles, если вы хотите знать, как она работает;)