PrimeNG 多选自动对焦

Kun*_*the 5 autofocus primeng angular primeng-dropdowns


在 Angular v7 项目中使用 PrimgNG v7.1.3。

在一个简单的组件中实现了 Multiselect ( https://www.primefaces.org/primeng-7.1.3/#/multiselect )。
需要在页面加载时设置焦点。

下面的解决方案适用于下拉但不适用于多选:

在 HTML 中: <p-dropdown #someDropdown></p-dropdown>

在组件中:

import { Dropdown } from 'primeng/dropdown';
@ViewChild('someDropdown') someDropdown: Dropdown;

this.someDropdown.applyFocus();
Run Code Online (Sandbox Code Playgroud)

但是对于Multiselect,它会抛出这种方法无效的错误。

尝试了此 SO 链接中提到的“ngIf 中的控制”中的第一个答案,仍然没有运气:primeng:设置焦点控制也
检查了 PrimeNG 文档和用户指南,但没有提到聚焦功能。

后来也试了下。它都没有奏效。

this.someMultiSelect.focus();
this.someMultiSelect.applyFocus();

this.someMultiSelect.el.focus();
this.someMultiSelect.el.applyFocus();

this.someMultiSelect.el.nativeElement.focus();
this.someMultiSelect.el.nativeElement.applyFocus();

this.someMultiSelect.containerViewChild.focus();
this.someMultiSelect.containerViewChild.applyFocus();

this.someMultiSelect.containerViewChild.nativeElement.focus();
this.someMultiSelect.containerViewChild.nativeElement.applyFocus();
Run Code Online (Sandbox Code Playgroud)

Stackblitz:https ://stackblitz.com/edit/primeng-multiselect-autofocus

请建议。

任何帮助表示赞赏。

Ash*_*yan 3

您可以获取元素ViewChild并执行此技巧以使其突出显示。

像这样的东西:

成分

import { MultiSelect } from 'primeng/multiselect';

export class AppComponent implements AfterViewInit {
  name = 'Angular';

  @ViewChild('someDropdown') someDropdown: MultiSelect; // <--- you need to import this from PrimeNG Library

 ngAfterViewInit() {
   setTimeout(() => {
     this.someDropdown.containerViewChild.nativeElement.click();  
     this.someDropdown.hide();
   }, 300);

  }

Run Code Online (Sandbox Code Playgroud)

这是 Stackblitz 的示例:

https://stackblitz.com/edit/ngprime-multiselect-efpy6z?embed=1&file=src/app/app.component.ts