使用 MatBottomSheet 时如何关闭浏览器背面的工作表

lar*_*eck 5 angular-material angular

正如标题所示,我正在使用https://material.angular.io/components/bottom-sheet/overview。当底部工作表打开并且用户单击浏览器的后退按钮时,他将被导航离开打开底部工作表的页面。相反,我只想关闭“浏览器返回”上的底部工作表。在 Angular 5/6 中实现这一目标的最佳方法(如果有)是什么?

lar*_*eck 2

我通过“#”链接使用“假路线”解决了这个问题:

this.location.go("#");
let sheet = this.bottomSheet.open(MyBottomSheetComponent, {
  data: { someData: someData },
});
let subscription = this.location.subscribe(x => {
  if (x.url === 'this_is_the_URL_you_are_coming_from') {
    sheet.dismiss(true);
  } else {
    subscription.unsubscribe();
  }
});
sheet.afterDismissed().subscribe(x => {
  if (!x) {
    this.location.back();
  }
});
Run Code Online (Sandbox Code Playgroud)

这种“技术”也可以用于角材料的对话框组件。对我来说这看起来不太惯用,所以如果有人有更简单的方法,请发布答案!