角度垫自动完成:以编程方式设置活动项目



你想做什么?

以编程方式将面板中的项目设置为活动状态。

看到了什么不符合你期望的东西?

使用自动完成的密钥管理器功能setActiveItem实际上根本不会更新面板的视觉效果。手动触发视觉更新时,它适用于鼠标单击,但不适用于使用键盘导航。

繁殖

堆栈闪电战演示

重现步骤:

  1. 单击输入。
  2. 点击Show More.
  3. SetActiveItem 选择指定索引处的项,但之后更改所选内容会中断。
  4. 使用键盘导航到Show More
  5. 回车键。
  6. 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);

最新更新