【发布时间】:2019-01-23 02:23:00
【问题描述】:
我们有一个带有required 验证的自动完成输入。当用户通过输入查询(但未选择任何选项)搜索选项时,即使输入与任何建议的选项都不匹配,该输入也是有效的。
我想要实现的是不允许用户发布表单,除非选择了建议的选项之一。我如何做到这一点?
<mat-form-field>
<input matInput placeholder="Pick one" aria-label="pick one" [matAutocomplete]="auto" [formControl]="form.controls['SELECTBOX_VALUE']">
<mat-autocomplete #auto="matAutocomplete">
<mat-option *ngFor="let option of myOptions | async" [value]="option.name"> <span>{{ option.name }}</span> </mat-option>
</mat-autocomplete>
</mat-form-field>
<small *ngIf="!form.controls['SELECTBOX_VALUE'].valid && form.controls['SELECTBOX_DEGER'].touched" class="mat-text-warn">Please select.</small>
ngOnInit() {
this.form = this.fb.group({
... some other fields
SELECTBOX_VALUE: [null, Validators.required]
});
我的自动编译过滤器代码非常简单:
this.form.get('SELECTBOX_VALUE').valueChanges
.pipe(
startWith(''),
map(option => secenek ? this.doFilter(option) : this.options.slice())
);
doFilter (name: string) {
return this.myOptions.filter(option =>
option.name.toLowerCase().indexOf(name.toLowerCase()) === 0);
}
【问题讨论】:
标签: angular angular-material angular-reactive-forms