Разрешить пользователю вводить только опции в mat-autocomplete in angular 6 - PullRequest
0 голосов
/ 11 июня 2018

Я использую mat-autocomplete.

<form class="example-form">
  <mat-form-field class="example-full-width">
    <input type="text" placeholder="Pick one" aria-label="Number" matInput [formControl]="myControl" [matAutocomplete]="auto">
    <mat-autocomplete #auto="matAutocomplete">
      <mat-option *ngFor="let option of options" [value]="option">
        {{ option }}
      </mat-option>
    </mat-autocomplete>
  </mat-form-field>
</form>

Интересно, есть ли способ ограничить пользователя только вводом параметров, указанных в раскрывающемся списке, т.е.только один, два и три. Когда пользователь вводит что-либо еще, например шестнадцать , тогда это не должно отображаться

 export class AutocompleteSimpleExample {
  myControl: FormControl = new FormControl();

  options = [
    'One',
    'Two',
    'Three'
   ];

}

1 Ответ

0 голосов
/ 13 сентября 2018

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

<input type="text" placeholder="Pick one" aria-label="Number" matInput [formControl]="myControl" (blur)="InputControl($event)" [matAutocomplete]="auto">

в компоненте

InputControl(event) {
    setTimeout(() => {
        let isValueTrue = this.options.filter(myAlias =>
            myAlias  === event.target.value);
        if (isValueTrue.length === 0) {
            this.form.get(‘MyControl’).setValue(null);
        }
    }, 300);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...