你想做什么?
以编程方式将面板中的项目设置为活动状态。
你看到了什么不符合你期望的东西?
使用自动完成的密钥管理器功能setActiveItem
实际上根本不会更新面板的视觉效果。手动触发视觉更新时,它适用于鼠标单击,但不适用于使用键盘导航。
繁殖
堆栈闪电战演示
重现步骤:
- 单击输入。
- 点击
Show More
. - SetActiveItem 选择指定索引处的项,但之后更改所选内容会中断。
- 使用键盘导航到
Show More
。 - 按回车键。
SetActiveItem
根本不起作用。
环境
- 角度:8.2.8
- CDK/材料:8.2.2
- 浏览器:全部
- 操作系统(例如Windows,macOS,Ubuntu(:全部
寻找有关如何使其工作的提示。我的方法是否错误,或者 setActiveItem 没有按应有的方式工作?在函数注释中,它被描述为:
将活动项设置为指定项,并向其中添加活动样式。还会从先前的活动项目中删除活动样式。
这听起来像是我需要的确切功能,但我无法让它工作。
我也有类似的问题。就我而言,我使用了 Ag-Grid,这停止了带有箭头的导航的事件传播。您确定您的 Mat-自动完成功能会收到该事件吗?
我不得不使用setTimeout。 修复是:
setTimeout(() => {
this.matSelect._keyManager.setActiveItem(1);
this.matSelect._keyManager.setActiveItem(2);
}, 1);