提问者:小点点

角形材料标线位置


我想在我的标题下放置材料零食条(它的高度是60px)。

问题是verticalPosition将snackbar放在顶部并覆盖页眉。 我试着添加“Margin-Top:75px”,但是上面的区域是不可点击的。 (有一个覆盖)

我不能改变cdk-overlay-pan的样式,因为我有其他的对话框。


共2个答案

匿名用户

您可以尝试以下操作:

  1. 创建全局CSS类以修改Snackbar组件的样式。
  2. 在配置选项中设置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;
}

相关问题