如何覆盖角度材料列表的css字段?

时间:2019-11-13 08:17:27

标签: css angular flexbox angular-material

我已经尝试过:

 :host ::ng-deep .mat-list-item-content{
    flex-direction: column
    } 

(从此Override Angular Material style in Angular component获得解决方案)

.myClass {flex-direction:column},然后将我的课程添加到mat-list-item-content

但是该字段总是被覆盖 enter image description here

3 个答案:

答案 0 :(得分:2)

要添加@adrian-sawicki 的答案,最好在下方关闭视图封装

@Component({
selector: 'list',
templateUrl: './list.component.html',
styleUrls: ['./list.component.css'],
encapsulation: ViewEncapsulation.None
})

完成此操作后,您不必依赖 ::ng-deep:host ::ng-deep,因为它们已被弃用。

例如,如果你想覆盖 mat-list-item 的填充,你所要做的就是

.example-container .mat-list-base .mat-list-item .mat-list-item-content {
  padding: 0 !important;
}

答案 1 :(得分:0)

这是因为原始CSS属性更特定。.如果在CSS后面添加!important:

:host ::ng-deep .mat-list-item-content { 
    flex-direction: column !important;
}

它应该可以解决您的问题。

答案 2 :(得分:0)

请勿使用ng-deep和!important。

ng-deep 已过时。

!重要并不是很好的做法。

在全局样式文件中编写更具体的样式。 在更高的元素上添加某种容器/类,并添加例如:

.example-container .mat-list-base .mat-list-item .mat-list-item-content {
  background: red;
}