如何使用 Angular Material 小吃店检查解雇原因?

How can I check the dismiss reason with an Angular Material snackbar?

Angular Material documentation 上的小吃店示例中,操作设置为 undo。我也想要一个undo snackbar。

但是有一个问题。 afterDismissed 事件在单击关闭按钮时触发,但在持续时间结束时也会触发。所以我的表单清除按钮将清除表单并显示快餐栏,但 5 秒后输入又回来了。

有没有办法检查撤消按钮是否调用了关闭?我不想使用自定义 Snackbar,因为我必须重新制作 Snackbar 设计...

当您订阅 afterDismissed 事件时,您应该能够知道该事件是否来自小吃店操作。

例如,如果您打开小吃店:

const snackBarRef = this.snackBar.open('Dummy message', 'Undo', {duration: 5000});

那就订阅活动:

snackBarRef.afterDismissed().subscribe(info => {
  if (info.dismissedByAction === true) {
    // your code for handling this goes here
  }
});

我不确定它是什么时候添加的,但 MatSnackbarRef 现在包含一个单独的 onAction 可观察对象,它仅在实际单击按钮时调用。