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
,只要我有类似的案例。我的问题更多的是关于一个集成的解决方案(至少是可重用的),感谢您的研究工作,我对一个解决方案感兴趣,它不需要在未来需要相同行为的开发中添加自定义代码