Trigger matAutocomplete программно - PullRequest
1 голос
/ 15 апреля 2019

Я хочу запускать автозаполнение только в том случае, если в конце вводимого текста написан специальный символ.

Например, когда пользователь вводит: '@', должно появиться автозаполнение.

Это мой код:

<mat-form-field>
  <input #myInput type="text" matInput [formControl]="myControl" [matAutocomplete]="myInput.value.slice(-1) == '@' ? auto : false">
</mat-form-field>

<mat-autocomplete #auto="matAutocomplete">
  <mat-option *ngFor="let option of options" [value]="option">{{option}}</mat-option>
</mat-autocomplete>

Автозаполнение появляется, но автоматически исчезает. Есть ли способ сделать это?

1 Ответ

1 голос
/ 15 апреля 2019

Этот способ работал со мной.

Добавить (keydown.@)="onKeydown($event)" в HTML-файл

<mat-form-field>
  <input #myInput type="text" matInput [formControl]="myControl" [matAutocomplete]="auto" (keydown.@)="onKeydown($event)" >
</mat-form-field>

<mat-autocomplete #auto="matAutocomplete">
  <mat-option *ngFor="let option of options" [value]="option">{{option}}</mat-option>
</mat-autocomplete>

В компоненте ts файл

@ViewChild(MatAutocompleteTrigger) autocomplete: MatAutocompleteTrigger;

onKeydown(e){
    this.autocomplete.openPanel();
  }

Демо: https://stackblitz.com/edit/angular-keyup-open-panel

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...