Проблема в том, что в момент нажатия на раскрывающийся список и вызова вашего onToggle
DOM еще не был обновлен для отображения раскрывающегося списка и ввода в раскрывающемся списке.
Что вы можете сделать вводит ChangeDetectorRef
в компонент через конструктор:
import { ChangeDetectorRef } from '@angular/core';
...
export class NgbdDropdownBasic {
...
constructor(private _cdRef: ChangeDetectorRef) {}
и вызывает this._cdRef.detectChanges();
, прежде чем сфокусироваться на вводе в вашем onToggle
методе:
onToggle(dropDownOpen: boolean) {
if (dropDownOpen) {
this._cdRef.detectChanges();
this.searchField.nativeElement.focus();
}
}
This приведет к раскрытию и вводу данных, так что при вызове this.searchField.nativeElement.focus();
он уже виден и получит фокус.
Пожалуйста, посмотрите этот StackBlitz для рабочей демонстрации.