例のように配列内の検索の代わりにアンギュラマテリアル2オートコンプリートを使用してAPIを検索しようとしています。これは私が試したものです:マテリアル2(角度4)オートコンプリートから外部APIの検索
HTML:
<mat-form-field fxFlex="33" class="mr-20 mt-20">
<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>
</mat-form-field>
TS:しかし
this.stateCtrl = new FormControl();
this.filteredStates = this.stateCtrl.valueChanges
.startWith(null)
.debounceTime(400)
.do(value => {
this.ClientsService.search(value).then(res => {
console.log(res, 'oi');
this.states = res;
})
});
、私が入力したとき、私はこのエラーを取得:Error: Cannot find a differ supporting object 'e' of type 'string'. NgFor only supports binding to Iterables such as Arrays.
注e
ことは何だとI検索フィールドに入力します。私がサーバーから受け取っている応答は、オブジェクトが入っている配列です。
私はここで何が欠けていますか?
あなたは内の値を得るのですか'filteredStates' –
サーバーから取得したデータをJSONに解析するのを忘れてしまいました。 JSON.parse()を実行すると正常に動作するはずです – TruckDriver
@Timothy私はサービス終了時のデータを解析しています。私は再びデータを解析しようとしたとき、私は同じエラーが発生しました。 – WagnerMatosUK