我如何更改 Angular 中 mat-dialog 的 Z-Index

How can i change the Z-Index of mat-dialog in Angular

我的应用程序使用多个垫对话框,有时可能会同时显示 2 个,这会导致问题,因为第二个对话框永远不会正确显示,而且它的模态使应用程序无法使用。经过更多研究后,我似乎可以通过

调整 mat-dialog 的 z-index
.cdk-overlay-container {
z-index: 500 !important;

}

但这不会解决我的问题,因为它会将所有的 z-index 更改为 500。我的问题是如何仅更改某些 mat-dialogs 的 Z-index。例如,我所有的基本对话框都可以是一个 z-index,因为它们永远不会同时显示,然后我有一些对话框会提醒或警告必须超越这些基本对话框的用户。使其在一定程度上可由用户配置的最佳方法是什么?

打开对话框时,您可以将 MatDialogConfig 提供给 open 方法。一个 属性 配置是 panelClass。所以在你的全局样式中,你可以有一个 class 来改变 z-index,只有当 class 通过配置应用到模态时。

styles.css

.warning-dialog {
    z-index: 500 !important;
}

然后在打开对话框时,您可以在配置中传递 class 名称:

this.dialog.open(
    YourComponent,
    {
        panelClass: 'warning-dialog'
    }
);

同时考虑从您的样式中删除 !important,这通常会在将来造成样式可维护性方面的问题。