![](/img/trans.png)
[英]How to customize or apply another class with ".cdk-overlay-pane" for angular material mat-select | mat-dialog
[英]How to customize cdk overlay pane?
我在不同的组件中使用 mat-menu 和 mat-select。 我面临的问题是,当我们设置
::ng-deep .cdk-overlay-container .cdk-overlay-pane {
}
在组件的 css 文件中,它相互冲突(这是预期的)。 那么有没有办法在两个组件中自定义覆盖窗格,这样它就不会影响另一个组件的样式。
我已经能够改变像.mat-menu-content
这样的覆盖的后代的东西,但不能覆盖自身。
根据您尝试设计的样式,您可以这样做:
app.component.scss
::ng-deep .mat-menu-panel {
background-color: unset;
}
::ng-deep .overlay-style-one .mat-menu-content {
background-color: aquamarine;
}
::ng-deep .overlay-style-two .mat-menu-content {
background-color: coral;
}
app.component.html
<ng-container>
<button mat-button [matMenuTriggerFor]="menu1">Menu 1</button>
<mat-menu #menu1="matMenu" class="overlay-style-one">
<button mat-menu-item>Item 1</button>
<button mat-menu-item>Item 2</button>
</mat-menu>
</ng-container>
<ng-container>
<button mat-button [matMenuTriggerFor]="menu2">Menu 2</button>
<mat-menu #menu2="matMenu" class="overlay-style-two">
<button mat-menu-item>Item 3</button>
<button mat-menu-item>Item 4</button>
</mat-menu>
</ng-container>
如果您想更改.cdk-overlay-pane
本身的 CSS,我不知道该怎么做。 有一个带有cdk-overlay-container
的div
可用于所有叠加层,它是body
元素的直接子元素。 CSS 中没有父选择器,如果存在的话,这里可能会有所帮助。
API 中有一个OverlayConfig ,但它似乎用于全局更改覆盖。
从 Angular Material v10开始,我们可以使用MAT_MENU_DEFAULT_OPTIONS
注入令牌。 它有一个选项 - overlayPanelClass: string | string[]
overlayPanelClass: string | string[]
,表示:
class 或要应用于菜单覆盖面板的类列表。
在组件或模块级别使用以下代码:
providers: [
{
provide: MAT_MENU_DEFAULT_OPTIONS,
useValue: { overlayPanelClass: 'menu-overlay-pane' }
}
]
Stackblitz 示例: https://stackblitz.com/edit/angular-zmjhh6
Docs: https://material.angular.io/components/menu/api#MAT_MENU_DEFAULT_OPTIONS https://material.angular.io/components/menu/api#MatMenuDefaultOptions
从 Angular Material v11开始,我们可以使用MAT_SELECT_CONFIG
注入令牌。 它有一个选项 - overlayPanelClass: string | string[]
overlayPanelClass: string | string[]
,表示:
class 或要应用于菜单覆盖面板的类列表。
在组件或模块级别使用以下代码:
providers: [
{
provide: MAT_SELECT_CONFIG,
useValue: { overlayPanelClass: 'select-overlay-pane' }
}
]
Stackblitz 示例: https://stackblitz.com/edit/angular-ig6y8v
Docs: https://material.angular.io/components/select/api#MAT_SELECT_CONFIG https://material.angular.io/components/select/api#MatSelectConfig
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.