javascript - Angular 5 Material snackbar

标签 javascript css angular angular-material2

我遇到的问题是, snackbar 组件在初始化时附加在 cdk-global-overlay-wrapper 之外(在 cdk-overlay-container 内)

这使得它在屏幕中间瞬间可见

然后它消失并重新连接到 cdk-global-overlay-wrapper 中,并从底部滚动。

有什么想法可以改变吗?

最佳答案

我有一个类似的问题,MatSnackBar 存在于 Angular 区域之外,这会破坏它与 Angular 的生命周期 Hook 的交互。

这仅在 snackBar.open() 调用堆栈最初由第 3 方服务(在我的示例中为 SignalR)执行时才会发生。

我通过将 snackBar.open() 命令包装在组件内的 NgZone.run() 任务中来修复它。这允许您从从外部执行的任务重新进入 Angular 区域。

示例:

import { Component, NgZone } from '@angular/core';
import { MatSnackBar } from '@angular/material';

@Component({
  selector: 'example',
  templateUrl: './example.component.html',
  styleUrls: ['./example.component.scss']
})
export class ExampleComponent {

  constructor( private snackBar: MatSnackBar, private zone: NgZone ) { }

  showSnackBar() {
    this.zone.run(() => {
      this.snackBar.open("message", "action");
    });
  }
}

这不完全是您描述的问题,但它可能有所帮助。

关于javascript - Angular 5 Material snackbar ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48423110/

相关文章:

javascript - JavaScript 内存在浏览器中是如何工作的?

Angular v5.2.4,Http拦截器: Error: Uncaught (in promise)

angular - 为 Angular 2 中的每个用户自定义 URL

angular - 使用正则表达式作为angular2中路由的路径值

javascript - 在需要模块之前使用 require.js 运行公共(public)代码

javascript - Angular Material 的 md-warn 开关

javascript - 无法为变量设置新值

css - 将箭头或三 Angular 形放在行尾

css - 设置 Twitter Bootstrap 页面的最小宽度

javascript - 如何识别 HTML Div 改变颜色的原因