Angular Material Snackbar 未正确显示

标签 angular angular-material angular7 snackbar

Stackblitz example

社区您好 我为我的 Angular 7 项目实现了一个全局错误处理程序和一个全局加载组件( Angular Material 旋转器)。 当检测到 HttpErrorResponse 时,应删除加载程序并显示 Angular Material snackbar 。

snackbar 应在页面底部打开,并应在单击“x”时关闭。

但它在左上角打开。

enter image description here

单击“x”时,它会关闭并在预期位置再次打开。但随后它不再对点击使用react。单击“x”然后单击窗口的其他位置后它会消失。

移除加载微调器时也会显示此行为。

有人知道如何解决这个问题吗? 非常感谢。

最佳答案

问题是 snackbar 正在 Angular 的区域之外运行。

可以将快速修复放在 SnackbarService 中或调用 error 方法的位置。

Stackblitz:src/app/services/snackbar.service.ts

import { Injectable, NgZone } from '@angular/core';
import { MatSnackBar, MatSnackBarRef, SimpleSnackBar, MatSnackBarConfig } from '@angular/material';

@Injectable({
  providedIn: 'root'
})
export class SnackbarService {

  constructor(
    public snackbar: MatSnackBar,
    private zone: NgZone,
  ) { }

  error(message: string) {
    const config = new MatSnackBarConfig();
    config.panelClass = ['background-red'];
    config.verticalPosition = 'bottom';
    config.horizontalPosition = 'center';
    this.zone.run(() => {
      this.snackbar.open(message, 'x', config);
    });
  }

}

关于 Angular Material Snackbar 未正确显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53277691/

相关文章:

angular - 使用 PDFJS 和 Angular 7 打印预览

angular - 将鼠标悬停在图像上可在其旁边显示更大的图像。 Angular 7

angular - 通过 Visual Studio Community 2017 在 Firefox 中调试 Angular 7 应用程序

css - TailwindCSS 对于 Angular 构建来说太大了

javascript - MD卡内有两个高度相同的图表

angular - 无法识别子模块 Angular 2 中的 Material 导入

angular - Dockerizing Angular 应用程序后路由不起作用

angular - 测试 - 无法解析 (ClassName) 的所有参数

angular - 在 Angular 2/4/6 应用程序中管理状态的最佳实践

css - 如何使用 Angular Material 表使表中的按钮响应