允许用户仅输入 Angular 6 中 mat-autocomplete 中的选项

Abx*_*Abx 2 angular mat-autocomplete

我正在使用 mat 自动完成。

<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>
Run Code Online (Sandbox Code Playgroud)

想知道是否有一种方法可以限制用户只能输入下拉列表中提供的选项,即。仅一、二和三。当用户键入诸如十六之类的其他内容时,不应显示它

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

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

}
Run Code Online (Sandbox Code Playgroud)

use*_*125 6

您可以绑定到模糊事件并检查输入值是否等于所需的输入,如下所示。我在自己的自动编译中使用了类似的方法。

\n\n
<input type="text" placeholder="Pick one" aria-label="Number" matInput [formControl]="myControl" (blur)="InputControl($event)" [matAutocomplete]="auto">\n
Run Code Online (Sandbox Code Playgroud)\n\n

在组件中

\n\n
InputControl(event) {\n    setTimeout(() => {\n        let isValueTrue = this.options.filter(myAlias =>\n            myAlias  === event.target.value);\n        if (isValueTrue.length === 0) {\n            this.form.get(\xe2\x80\x98MyControl\xe2\x80\x99).setValue(null);\n        }\n    }, 300);\n}\n
Run Code Online (Sandbox Code Playgroud)\n