角度材料的自动完成组件在 MatDialog 组件内未按预期工作。自动完成组件中的 drpodown 部分不会粘贴到输入字段。
堆栈闪电战链接 -example https://stackblitz.com/edit/angular-s698hp
重现 - 转到 stackblitz 上面。单击“打开弹出窗口”按钮。单击“选择一个”自动完成字段。这些选项将以下拉菜单形式打开。然后滚动弹出窗口的 bodu。请注意,自动完成组件的下拉部分不会粘在输入字段上。我该如何解决?
这是因为下拉菜单实际上是cdk-overlay-container
并且不属于matAutocomplete
...仅由触发matAutocomplete
被渲染在cdk-overlay-container
,计算出top
位置基于的放置matAutocomplete input
用户与字段交互时的字段。
重要的提示:CDK容器是透明的,根浏览器视图端口的完整高度和宽度,覆盖所有内容
在你的应用程序中。
如果你要这么说matAutocomplete
在对话框中间,打开,然后关闭...稍微滚动位置,打开matAutocomplete
再次...您会注意到它使用新计算的值呈现在新位置top
而不是旧的......
一旦它被渲染并通过以下方式出现在 DOM 上cdk-overlay-container
但是,没有实时滚动事件来强制cdk-overlay-container
使用滚动事件“重新计算”顶部位置。
我认为这个想法是与交互的用户
自动完成功能通常不会在执行此操作时滚动...
他们正在积极寻找一个价值...一旦选择...他们然后
继续进行 UI 导航。
如果您注意到,一旦您与mat-select
在同一个对话框中,您无法在打开时滚动...我认为他们这样做是出于这个特定原因,因为它也使用了cdk-overlay-container
渲染下拉菜单...我不太清楚为什么matAutocomplete
行为不一样。
如果你把它放在你的组件CSS中,然后打开你的对话框,你可以看到对话框和下拉菜单是这个“隐藏”容器的一部分......甚至打开对话框之前的自动完成也会暴露这个容器,你可以看到下拉菜单不是红色的...但它下面的所有内容都是红色的。
::ng-deep .cdk-overlay-container{
background-color: #ff000087;
}
有关 CDK 的更多信息请参见此处。
https://material.angular.io/cdk/overlay/overview https://material.angular.io/cdk/overlay/overview
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)