Javascript 当MatSelect打开时,如何滚动基础MAT对话框?

Javascript 当MatSelect打开时,如何滚动基础MAT对话框?,javascript,angular,angular-material,Javascript,Angular,Angular Material,在常规页面中打开MatSelect时,可以通过MAT\u SELECT\u scroll\u STRATEGY注入令牌自定义滚动行为,并使用noopscroll STRATEGY滚动底层页面,同时保持MatSelect的位置 但是,当从MatDialog打开MatSelect时,MAT\u-SELECT\u-SCROLL\u策略完全无效,我无法滚动底层MatDialog 我创建了一个示例来演示这个问题 一种解决方法是使用指针事件设置backDropClass:none,但它也会在我单击它时禁用关

在常规页面中打开
MatSelect
时,可以通过
MAT\u SELECT\u scroll\u STRATEGY
注入令牌自定义滚动行为,并使用
noopscroll STRATEGY
滚动底层页面,同时保持
MatSelect
的位置

但是,当从
MatDialog
打开
MatSelect
时,
MAT\u-SELECT\u-SCROLL\u策略
完全无效,我无法滚动底层
MatDialog

我创建了一个示例来演示这个问题


一种解决方法是使用
指针事件设置
backDropClass
:none
,但它也会在我单击它时禁用关闭行为,我想保留它。如果可能的话,我也希望避免基于z-index的黑客攻击。

我曾尝试在使用纯css单击菜单外部时关闭matSelect,但没有找到方法。因此,我必须在ts文件中进行代码更改

我在这里编辑了你,它似乎在工作。请核实

在global style.css/scss文件中添加以下代码将允许您在matselect打开时滚动对话框,并允许在外部单击时关闭对话框:

.cdk-overlay-backdrop.cdk-overlay-backdrop-showing {
  pointer-events: none;
}

.cdk-overlay-dark-backdrop {
  pointer-events: auto !important;
}

要在菜单外单击时关闭matSelect,必须更改.ts代码。请参考stackblitz链接了解这一点。

正如我所说,当我在菜单外单击时,它会禁用关闭行为。。。我以为你是想在对话框外而不是菜单外单击时关闭对话框。。我将进行更改。进行更改以在单击外部时关闭菜单。我已经更新了我的答案。请验证..是的,虽然它很黑,但我必须复制/粘贴
@HostListener
,只要我有类似的案例。我的问题更多的是关于一个集成的解决方案(至少是可重用的),感谢您的研究工作,我对一个解决方案感兴趣,它不需要在未来需要相同行为的开发中添加自定义代码