Почему я могу установить настройки высоты мата только на уровне компонентов css?

Я использую материал Angular в своем проекте Angular 8 и пытаюсь настроить дизайн тени на своих карточках материалов. Я использую миксины помощника повышения, как описано здесь: https://material.angular.io/guide/elevation

Вместо того, чтобы настраивать эти повышения в файле CSS каждого компонента, я пытаюсь сделать это на глобальном уровне. Когда я объявляю класс стилей на уровне компонентов, он работает, но когда я объявляю его на глобальном уровне, работает только НЕКОТОРЫЙ из css.

Когда я объявляю класс в глобальном файле styles.css

// styles.scss
@import '~@angular/material/theming';

.card-design {
   border: 1px solid #ff0000; // this IS applied
   @include mat-elevation(8); // this is NOT applied
}  

Когда я объявляю класс на уровне компонента

// nameOfComponent.component.scss
@import '~@angular/material/theming';

.card-design {
   border: 1px solid #ff0000; // this IS applied
   @include mat-elevation(8); // this IS applied
}  

Так как цвет границы применяется, когда я объявляю класс на глобальном уровне, я знаю, что класс применяется правильно, просто то, что высота не применяется или перезаписывается.

Как я могу это исправить?

1 ответ

Попробуйте использовать :host и / или ::ng-deep нравится:

:host ::ng-deep .card-design {
   border: 1px solid #ff0000; // this IS applied
   @include mat-elevation(8); // this is NOT applied
} 

или же

:host .card-design {
   border: 1px solid #ff0000; // this IS applied
   @include mat-elevation(8); // this is NOT applied
} 

Читайте больше о хосте здесь. Похоже, ссылка::nd-deep устарела.

Я не проверял это, но это должно работать, так как я сталкиваюсь с подобными проблемами при работе с Angular 7,

Другие вопросы по тегам