RX.jsの新しいHttpClientModule
とmap()
関数に関する問題に直面しています。角4のHttpClientModuleとmap()関数
私がしたいのは、get()
メソッドからのオブザーバブル内で返される配列のオブジェクトを変更することです。
マイ海流コード:
get(url: string): Observable <any> {
return this.http.get(this.config.baseUrl + url);
}
playerSearch(text: string): Observable <any[]> {
if (text == "" || !text) {
return Observable.of([]);
} else {
return this.auth.get(`/players?$expand=Contact($expand=Blob)&$filter=contains(Contact/LastName, '${text}') or contains(Contact/FirstName, '${text}')`).map((x) => {
return {
Id: x.Id,
Name: x.Contact.FirstName + " " + x.Contact.FatherName.substring(0, 2) + ". " + x.Contact.LastName,
BlobSrc: this.utilitiesService.imageLinkCreator(x)
}
});
}
}
search = (text$: Observable <string>) =>
text$
.debounceTime(300)
.distinctUntilChanged()
.do(() => this.searching = true)
.switchMap(term =>
this.dataService.playerSearch(term)
.do(() => this.searchFailed = false)
.catch(() => {
this.searchFailed = true;
return Observable.of([]);
}))
.do(() => this.searching = false);
私が取得エラー:< {ID観察可能
タイプ」:いずれかを。名前:文字列。 BlobSrc:文字列。 }> 'は' Observable '型に割り当てられません。
タイプ '{Id:any;名前:文字列。 BlobSrc:文字列。 } 'は型' any [] 'に代入不可能です。
私が知る限り、map()
メソッドは、配列の代わりに値が1つしかないobservable
を返します。
{ Id: any; Name: string; BlobSrc: string; }
オブジェクトの配列を含むオブザーバブルを返すための正しい構文は何ですか?
httpリクエストから何が返されると思いますか? – Amit
実際に 'map'は配列/配列ではなく、' Observable 'と' T => S'関数だけをとり、 'Observable
' – Amitを返します。値は 'Observable'として配列されていますが、データをオブジェクトにマップします。 –
Amit