我想在我的标题下放置材料零食条(它的高度是60px)。
问题是verticalPosition将snackbar放在顶部并覆盖页眉。 我试着添加“Margin-Top:75px”,但是上面的区域是不可点击的。 (有一个覆盖)
我不能改变cdk-overlay-pan的样式,因为我有其他的对话框。
您可以尝试以下操作:
CSS
类以修改Snackbar
组件的样式。PanelClass
属性。在全局styles.scs
中添加此样式声明:
.my-custom-snackbar {
margin: 0 !important;
position: absolute;
right: 25px;
top: 60px;
}
则当Snackbar
打开时:
this.snackbar.open('Hello the world!', '', {
panelClass: 'my-custom-snackbar'
});
来自api文档(https://material.angular.io/components/snack-bar/api):
MatSnackBar的“Open”方法的参数:
message (string) - The message to show in the snackbar.
action (string) - The label for the snackbar action.
config? (MatSnackBarConfig<any>) - Additional configuration options for the snackbar.
MatSnackBarConfig具有以下属性之一:
horizontalPosition: MatSnackBarHorizontalPosition - The horizontal position to place the snack bar.
verticalPosition: MatSnackBarVerticalPosition - The vertical position to place the snack bar.
为了看到实际操作,您可以轻松地创建一个组件,注入MatSnackBar并编写一个open方法来传递配置。
下面是我的Snackbar组件的一个小例子:
import { Component } from '@angular/core';
import { MatSnackBar } from '@angular/material/snack-bar';
@Component({
selector: 'app-mat-snackbar',
templateUrl: './mat-snackbar.component.html',
styleUrls: ['./mat-snackbar.component.scss']
})
export class MatSnackbarComponent {
constructor(public snackBar: MatSnackBar) {}
openSnackBar(message: string, action: string, className: string) {
this.snackBar.open(message, action, {
duration: 9000,
verticalPosition: 'top',
horizontalPosition: 'center',
panelClass: [className],
});
}
}
我从http拦截器中这样调用它:
constructor(private SnackbarComponent: MatSnackbarComponent) {}
...
...
// Something wrong happened
this.SnackbarComponent.openSnackBar(errorMessage, 'Close', 'error-snackbar');
在我的style.css文件中,我为这个snackbar添加了一个css类,它也是openSnackBar方法的最后一个参数,包含margin-top:60px。
它看起来像:
.error-snackbar {
margin-top: 60px !important;
background: #F8D7DA;
color: #721C24;
}
.error-snackbar button {
background-color: #F8D7DA;
color: #721C24;
outline: 0;
}