【发布时间】:2019-12-20 16:33:34
【问题描述】:
我是 NgbDropdown 和相关 ng-bootstrap 代码的新手,当使用 Enter 键打开新的 NgbDropdown 时,我无法弄清楚如何关闭所有以前的 NgbDropdown。
我在我的 Angular 项目的一个页面上创建了许多 NgbDropdowns,我发现当我从下拉按钮单击到下拉按钮时,之前打开的下拉菜单会关闭;但是,如果我从一个打开的下拉列表中选择 TAB 到另一个下拉按钮并使用 enter 键打开第二个下拉列表,这可能是可访问性所需要的,则第一个下拉列表不会关闭。我留下了两个相互重叠的下拉菜单。
此序列可以在 NgbDropdown 主示例页面https://ng-bootstrap.github.io/#/components/dropdown/examples 上复制:在不同的按钮上(顶部的第一个示例。)
顺序: 1.标签到“切换下拉” 2.按回车键打开下拉菜单 3. 浏览下拉选项,再点击一次,这样你就已经 标签到“切换下拉”按钮。 4.按回车键 5. 两个下拉菜单将同时打开。
显然,当在其他按钮上按下回车键时,关闭先前单击下拉菜单的代码不起作用。没有找到太多关于可以在 typescript 中使用各种 Ngb 对象做什么的文档,我不知道在使用 enter 键打开新下拉列表时如何关闭所有以前的下拉列表。我能想到的就是:
1) 遍历 ts 文件中的所有下拉菜单,在打开最新的之前关闭它们。如果这是最好的解决方案,我看不出有任何方法可以遍历一组打开的下拉列表。作为 NgbSolution 的一部分,我是否可以使用这样的对象/数组,还是我必须自己将每个对象/数组添加到数组中?
2) 当在按钮上按下回车键时触发点击事件。同样,我不知道如何让一个事件在 NgbDropdown 对象上触发另一个事件。
任何指针将不胜感激。我没有在这里发布我的代码,因为它与上面引用的基本示例相同。
【问题讨论】:
标签: ng-bootstrap