从 SnackBar 组件撤消操作

Posted

技术标签:

【中文标题】从 SnackBar 组件撤消操作【英文标题】:Undo Action from SnackBar Component 【发布时间】:2018-10-09 15:23:06 【问题描述】:

我需要从snackBar 自定义组件创建一些撤消逻辑。我在从自定义snackBar 组件调用撤消逻辑函数时面临挑战。

小吃店服务:

showSnackbar(mes: string)
    let snackRef=this.snackBar.openFromComponent(SnakebarComponent, 
              duration : 2000,
               data: mes
                   );
  

SnackBar 组件:

constructor(@Inject(MAT_SNACK_BAR_DATA) public data: any)  
  message = this.data;

  ngOnInit() 
  

  onClick()
     // Undo Button of custom component
  

组件调用snackBar

this._utility.showSnackbar('Saved Successfull!!');

请帮助我实现同样的目标。

【问题讨论】:

【参考方案1】:

我想您可能正在寻找这种方法dismissWithAction()。在您的函数中,在 Snackbar 的引用上调用 dismissWithAction() 以关闭小吃吧。

来自官方文档:

dismissWithAction:标记已点击的快餐栏操作 - Angular Material - MatSnackBarRef API

例子:

// ...
export class CustomSnackBar 
  constructor(private snackBarRef: MatSnackBarRef<CustomSnackBar>) 

  onActionBtnClick() 
    this.snackBarRef.dismissWithAction();
  

打开快餐栏的代码:

let snackBarRef = this.snackBar.openFromComponent(CustomSnackBar);
snackBarRef.onAction().subscribe(() => 
  console.log('Action button clicked!');
)

【讨论】:

它显示类型 MatSnackBarRef 上不存在dismissWithAction!! @NishantVarshney 你能试试closeWithAction()吗?你的 Angular Material 版本是什么?

以上是关于从 SnackBar 组件撤消操作的主要内容,如果未能解决你的问题,请参考以下文章

Android Material Design 系列之 SnackBar详解

如何使用Context使snackbar成为全局组件

从非 UI 线程调用 Snackbar.make() 是如何工作的?

来自另一个片段的 Snackbar 回调

Angular (v5+) - Snackbar “openFromComponent”,组件通信

Material Design ,Snackbar的使用