我正在使用material.angular.io中的mat-auto完整组件.默认行为是用户可以输入任何值,并提供可供选择的选项.您还可以将输入添加到所选值.
你可以在这里查看示例.
https://stackblitz.com/angular/ngmvgralayd?file=app%2Fautocomplete-simple-
example.html的
你可以在这里查看示例.
https://stackblitz.com/angular/ngmvgralayd?file=app%2Fautocomplete-simple-
example.html的
<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" disabled="true"> <mat-autocomplete #auto="matAutocomplete"> <mat-option *ngFor="let option of options" [value]="option"> {{ option }} </mat-option> </mat-autocomplete> </mat-form-field> </form>
但我希望表单字段仅从给定选项中获取值,并希望除了给定选项之外,不希望用户输入任何值.怎么做到这一点?它就像具有自动完成功能的选择输入.
解决方法
You can do something like this
标记:
<md-input-container class="full-width"> <input mdInput [mdAutocomplete]="autoData" #searchMyData formControlName="myControl" (keyup)="changeMyControl()"> </md-input-container> <md-autocomplete #autoData="mdAutocomplete"> <md-option *ngFor="let option of options" [value]="option.name" (onSelectionChange)="onSelectedOption($event.source.selected,option.id);"> {{ option.name }} </md-option> </md-autocomplete>
零件:
selectedOption; changeMyControl(): void { if (isUndefined(this.selectedOption) { // also check selected item and entered text are not same this.myForm.get('myControl').setErrors({'incorrect': true}); } } onSelectedOption(isSelected: boolean,id: number): void { if (isSelected) { setTimeout(() => { const option = this.options.filter(bt => bt.id === id); if (option.length > 0) { this.selectedOption= option[0]; // patch formcontrol value here } },200); } }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。