【发布时间】:2021-08-10 20:13:44
【问题描述】:
我有一个组件使用 ::ng-deep 来设置其后代的样式,但我正在尝试实现此处提供的答案 How to style child components from parent component's CSS file?
我的 HTML 组件部分如下所示
<span class='icm'>
<button mat-icon-button [matMenuTriggerFor]="menu">
<mat-icon fontSet="material-icons-outlined" class="aligned-icon">
more_vert
</mat-icon>
<mat-menu #menu="matMenu">
<button mat-menu-item (click)="showOrderHistory(1234)">
Order history
</button>
</mat-menu>
</button>
</span>
我的组件 .scss 文件如下所示
.icm {
.mat-menu-content:not(:empty){
padding-top: 0px !important;
padding-bottom: 0px !important;
}
.mat-menu-panel {
min-width: 112px !important;
overflow: auto;
-webkit-overflow-scrolling: touch;
border-radius: 4px;
outline: 0;
min-height: unset !important;
}
.mat-menu-item {
font-size: 14px !important;
height: 32px !important;
line-height: 32px !important;
}
}
并且 component.ts 有所需的行
encapsulation: ViewEncapsulation.None
但是样式没有被应用,我不希望它们是全局的,只是应用于“icm”范围内的任何 mat-menu
还有另一个非常相似的问题,但没有接受答案 - How do I style child component from parent's SCSS without ng-deep?
更新
【问题讨论】:
-
你是否在组件的装饰器中更改了
encapsulation: ViewEnapsulation.None? -
如果没有看到更多生成的 HTML 代码,很难提供帮助,您能否将开发人员工具的屏幕截图打开,查看 HTML 代码和 css 属性。也许您定义的规则不够“具体”,而 angular-material 有更具体的规则......
-
@Tonio 我们拼写正确我只是快速编辑的一个错字
-
我已经用正在生成的开发者工具和 HTML 更新了问题
-
所以你的包装标签有问题,但即使没有它,你应该在某处看到
<span class='icm'>,我无法在你提供的截图中看到它,这是你问题的关键