Для этого вы можете инициировать событие ввода для элемента ввода, с которым связан NgbTypeahead, затем вызвать метод focus, чтобы у ввода был фокус, и вы можете сразу начать печатать.
Я начал с демонстрации Open on focus с веб-сайта ng-bootstrap и внес следующие изменения:
Объявите новую переменную шаблона elem
, чтобы элемент DOM был доступен внутри файла TS компонента (обратите внимание, что вы не можете использовать существующий instance
, так как это NgbTypeahead, а не элемент HTML):
Компонент HTML:
<input
id="typeahead-focus"
...
#instance="ngbTypeahead"
#elem
/>
Компонент TS:
@ViewChild('elem') elem: ElementRef;
Добавьте кнопку в шаблон, которая будет вызывать функцию фокуса - эта кнопка при нажатии откроет заголовок и сфокусируется на нем:
<button (click)="openTypeahead()">Open Typeahead</button>
Добавьте функцию openTypeahead
в файл компонента TS следующим образом:
public openTypeahead(): void {
// Dispatch event on input element that NgbTypeahead is bound to
this.elem.nativeElement.dispatchEvent(new Event('input'));
// Ensure input has focus so the user can start typing
this.elem.nativeElement.focus();
}
Пожалуйста, посмотрите этот Stackblitz для демонстрации