如何使用“.cdk-overlay-pane”为角度材料垫选择自定义或应用另一个类 | 垫子对话框

Vik*_*ate 11 html css angular-material angular mat-select

我正在使用 mat-select 来显示选项列表。因此,当您单击 mat-select 输入字段时,它会显示使用 div 和 cdk-overlay-pane 类的选项列表。我想自定义 cdk-overlay-pane 类。使用 ::ng-deep 我这样做了,

  ::ng-deep {
    .cdk-overlay-pane {
      transform: translateX(-40px) translateY(-13px) !important;
    }
  }
Run Code Online (Sandbox Code Playgroud)

它也有效,但它正在影响另一个 cdk-overlay-pane。

有没有办法使用 cdk-overlay-pane 为该 div 提供 customClass ?

<div id="cdk-overlay-1" class="cdk-overlay-pane customClass" style="transform: translateX(-40px) translateY(-51px);"> 
Run Code Online (Sandbox Code Playgroud)

这样只有这个div会被定制,并且不会影响其他div。

and*_*tor 15

您应该使用MAT_SELECT_CONFIG注入令牌。它有一个选项overlayPanelClass: string | string[],代表:

要应用于菜单覆盖面板的类或类列表。

很快,在组件或模块级别使用以下代码:

providers: [
    {
      provide: MAT_SELECT_CONFIG,
      useValue: { overlayPanelClass: 'customClass' }
    }
  ],
Run Code Online (Sandbox Code Playgroud)

演示: https: //stackblitz.com/edit/angular-hxgonn


overlayPanelClass选项可从Angular Material v11 中获取。

MAT_SELECT_CONFIG记录在这里MatSelectConfig记录在这里