从 ts (angular, of-select) 打开 select

Open select from ts (angular, ng-select)

我在一个页面上有几个 ng-selects,我正在尝试从 ts 打开一个。

我可以使用以下方法专注于正确的 ng-select:

@ViewChildren(NgSelectComponent) ngselect: QueryList<NgSelectComponent>;
this.ngselect.last.filterInput.nativeElement.focus()

但是,我打不开。我尝试了以下

this.ngselect.last.filterInput.nativeElement.open() 

但出现错误:

_this.ngselect.last.filterInput.nativeElement.open is not a function

.open() 是一种方法......我怎样才能让它工作? https://github.com/ng-select/ng-select#methods

有一种更简单的方法可以实现您的目标。如果您查看文档(可在此处找到:https://github.com/ng-select/ng-select#api),您会发现可以将 isOpen 传递给 ng-select。更改传递给右侧 ng-selectisOpen 的值将自动打开和关闭它。

示例:

<ng-select
  [isOpen]="isOpen"
  [items]="items"
>
</ng-select>

并且在组件 class 中,您只需更改 isOpen 即可打开和关闭 select。

你试过这样的事情吗

<ng-select #Selecter ></ng-select>

@ViewChild('Selecter') ngselect: NgSelectComponent;

ngAfterViewInit() {
  this.ngselect.open();
}

工作示例 Links To stackblitz

您可能还需要在您的测试文件中打开它,当您想要检查 DOM 中的项目时,等等:

1.创建一个文件并添加它(如果你愿意,也可以添加到现有文件)

import { DebugElement } from '@angular/core';
import { ComponentFixture } from '@angular/core/testing';
import { By } from '@angular/platform-browser';

/*
* Utils based on ng-select helper functions:
  https://github.com/ng-select/ng-select/blob/3018a1098ba2ad06fbdf4dfe60209087cbd68185/src/ng-select/testing/helpers.ts
*/
export function getNgSelectElement(fixture: ComponentFixture<any>): DebugElement {
    return fixture.debugElement.query(By.css('ng-select'));
  }

export function triggerKeyDownEvent(element: DebugElement, which: number, key = ''): void {
  element.triggerEventHandler('keydown', {
      which: which,
      key: key,
      preventDefault: () => { },
  });
}

2。将函数导入您的测试文件并像这样使用它们:

// Open the dropdown
triggerKeyDownEvent(getNgSelectElement(fixture), 32);
fixture.detectChanges();