【发布时间】:2018-12-15 16:46:15
【问题描述】:
我开始在我的一个项目中使用 Material。
看文档网站<mat-autocomplete>的例子...
<mat-form-field class="example-full-width">
<input matInput placeholder="State" aria-label="State" [matAutocomplete]="auto" [formControl]="stateCtrl">
<mat-autocomplete #auto="matAutocomplete">
<mat-option *ngFor="let state of filteredStates | async" [value]="state.name">
<span>{{state.name}}</span> |
</mat-option>
</mat-autocomplete>
ts:
export class AutocompleteOverviewExample {
stateCtrl = new FormControl();
filteredStates: Observable<State[]>;
states: State[] = [
{ name: 'Arkansas' },
...
{ name: 'Texas' }
];
constructor() {
this.filteredStates = this.stateCtrl.valueChanges
.pipe(
startWith(''),
map(state => state ? this._filterStates(state) : this.states.slice())
);
}
private _filterStates(value: string): State[] {
const filterValue = value.toLowerCase();
return this.states.filter(state => state.name.toLowerCase().indexOf(filterValue) === 0);
// Material example, its basically a ._http.get(value).map
}
}
当您单击输入字段时,<mat-option> 列表已部署。我想避免这种情况,只在 X 时显示选项(他们写了 3 个或更多字符,它是一个包含 5 个或 10 个元素的“小”列表等)。
如何修改此行为并动态执行?
【问题讨论】:
标签: angular typescript angular-material