首页 > 解决方案 > Angular-Slickgrid 下拉框过滤器在每次单击过滤器后会在网格下方弹出额外的下拉框

问题描述

我正在使用 Angular 版本 11 和 Angular-Slickgrid 版本 2.23.0

我在 Angular-Slickgrid 中添加了一个下拉框过滤器。过滤器功能没有问题,但是每次单击过滤器时,网格下方都会出现一个额外的下拉框,并且在刷新页面之前它不会消失。

如果我继续单击过滤器,则会出现越来越多的额外下拉框。看起来网页上只有一个额外的框,但是当我打开 html 元素时,我可以看到生成的下拉元素列表。

在此处输入图像描述

我查看了关于过滤器的Angular-Slickgrid官方演示页面,每次单击过滤器时,html页面底部都会生成一个带有位置的下拉元素,当我再次单击过滤器时,下拉元素会消失。这是它应该工作的方式,但是当我单击过滤器时下拉框元素不会消失。

请参阅下面的源代码。在调试期间,我删除了所有不必要的代码以仅保留一列,但问题仍然存在。这个问题存在于我项目中的所有下拉框过滤器中。其他只有文本的过滤器效果很好。

在此处输入图像描述

在此处输入图像描述

非常感谢您的帮助。

标签: angularfilterslickgridangular-slickgrid

解决方案


对于遇到此问题的人,在此处之外进行了讨论,结果证明是因为body页面中有多个。解释为什么会出现这个问题,Angular-Slickgrid 使用multiple-select.js外部库,下拉列表实际上是 Filter 输入下的位置,当我们说(位置)时,我们实际上是指移动下拉列表的重新定位(按绝对位置)在输入下和 Angular-Slickgrid 中,我们使用容器,body因为这是使它显示在其他所有内容上的唯一方法,因此只有一个body才能正常工作。

Angular-Slickgrid 使用的默认多选选项是

const defaultOptions: MultipleSelectOption = {
  autoAdjustDropHeight: true,
  autoAdjustDropPosition: true,
  autoAdjustDropWidthByTextSize: true,
  container: 'body', // <<-- we use `body` for positioning over everything
  filter: false, 
  maxHeight: 275
};

推荐阅读