首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Angular-material MatSnackBar默认持续时间

Angular-material MatSnackBar默认持续时间
EN

Stack Overflow用户
提问于 2018-02-07 05:00:26
回答 3查看 6.8K关注 0票数 4

我们的团队在应用程序中使用Angular材质的MatSnackBar。因为每个人负责不同的页面,所以每个页面的snackBars有不同的持续时间。有的设置为2000ms,有的设置为1000ms,有的甚至设置为3000ms。

我想从一个变量中获取持续时间值,这样我就可以在一个地方控制所有snackBars的持续时间。甚至可能是为了让开发人员在调用snackBar.open函数时不发送持续时间值。

代码语言:javascript
复制
this.snackBar.open(message, {
  duration: 2000,
});

最好的方法是什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-05-24 16:32:53

您应该设置一个应用程序范围的default Snackbar configuration

代码语言:javascript
复制
@NgModule({
  providers: [
    {provide: MAT_SNACK_BAR_DEFAULT_OPTIONS, useValue: {duration: 2500}}
  ]
})

您仍然需要清理现有代码并删除传递了显式持续时间的实例,但未来的代码可以只使用this.snackbar.open(msg),而不使用任何选项。

票数 12
EN

Stack Overflow用户

发布于 2018-02-08 04:01:47

我通过包装MatSnackBar并使用dialog.open的工厂解决了这个问题。

代码语言:javascript
复制
import { Injectable } from '@angular/core';
import { MatSnackBar, MatSnackBarConfig } from '@angular/material';

@Injectable()
export class SnackBarService {
  private config: MatSnackBarConfig;
  constructor(private snackBar: MatSnackBar) {
this.config = new MatSnackBarConfig();
this.config.duration = 2000;
}
public open(message: string, duration?: number, action?: string) {
this.config = duration ? Object.assign(this.config, { 'duration': duration }) : this.config;
this.snackBar.open(message, action, this.config);
}}
票数 1
EN

Stack Overflow用户

发布于 2021-08-17 11:54:24

对我来说最简单的方法就是

代码语言:javascript
复制
this.snackBar.open("Item added to Cart", "X", {"duration": 2000});

因此,对于您的情况,从centralized const变量中获取持续时间的值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48651883

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档