Я использую элемент управления Angular Material Autocomplete в качестве строки поиска.Панель поиска ведет себя довольно типичным образом - пользователь вводит свой запрос, нажимает Enter , и поиск запускается.
Однако, если пользователь выбирает предложение из автозаполнения (дляНапример, "beaton" или "beck" на изображении ниже), я бы хотел, чтобы поиск не был запущен.
Как я могу определить, было ли нажатие клавиши Enter результатом выбора пользователем автозаполнения, или это был запуск пользователем запроса?
В обоих случаях мой onSearchKeydown
вызываемая функция:
// my.controller.ts
public async onSearchKeydown($event: KeyboardEvent) {
if ($event.which === Key.Enter) {
const results = await this.search(this.query);
}
}
Вот соответствующая часть HTML моего компонента:
<!-- my.component.html -->
<mat-form-field>
<input matInput
autofocus
[(ngModel)]="query"
(keydown)="onSearchKeydown($event)"
[matAutocomplete]="auto">
<mat-autocomplete #auto="matAutocomplete">
<mat-option *ngFor="let s of suggestions">
<span>{{s.value}}</span>
</mat-option>
</mat-autocomplete>
</mat-form-field>