私はオートコンプリートを実装しましたが、エラーはありません。すべて問題はないようですが、何も起こりません。入力フィールドに何かを入力しましたが、アクションが発生していないようで、コンソールには何も表示されません。
HTML
<form>
<mat-form-field>
<input type="text" matInput [formControl]="myControl" [matAutocomplete]="auto">
</mat-form-field>
<mat-autocomplete #auto="matAutocomplete">
<mat-option *ngFor="let n of testValues" [value]="n">
{{n}}
</mat-option>
</mat-autocomplete>
</form>
TS
import { MatAutocomplete } from '@angular/material/autocomplete';
import { FormControl } from '@angular/forms';
...
public testValues = ['one', 'two', 'three', 'four'];
public myControl: FormControl;
...
constructor() {
this.myControl = new FormControl();
}
編集:インポートしました
import {MatAutocompleteModule} from '@angular/material/autocomplete';
私のアプリモジュールで。
資料のバージョン-
"@angular/material": "^5.0.0-rc.2",
_.ts
_にフィルターメソッドがありません
myControl
valueChanges
を次の方法で購読する必要があります:
_this.myControl.valueChanges.subscribe(newValue=>{
this.filteredValues = this.filterValues(newValue);
})
_
したがって、フォームコントロールの値が変更されるたびに、次のようなカスタムfilterValues()
メソッドを呼び出します。
_filterValues(search: string) {
return this.testValues.filter(value=>
value.toLowerCase().indexOf(search.toLowerCase()) === 0);
}
_
したがって、testValues
配列をベース配列として使用し、filteredValues
配列をHTMLで使用します。
_<mat-option *ngFor="let n of filteredValues" [value]="n">
{{n}}
</mat-option>
_
フィルタリングは自動ではありません。オプションをフィルタリングするには、カスタムメソッドを使用する必要があります。それが役に立てば幸い