也许是一个简单的问题,但我找不到为此的示例。
这是我的HttpClient呼叫
getItems(dataSourceUrl: string, bindKey: string, bindValue: string): Observable<SelectItem[]> {
return this.httpClient.get<Array<any>>(dataSourceUrl);
}
我想基于bindKey
和bindValue
将列表结果映射到SelectItem []。我该怎么办?
我尝试过这样的事情
return this.httpClient.get<Array<any>>(dataSourceUrl).pipe(map(x=> { return { label: data.bindKey, value: data.bindValue } }));
界面
export interface SelectItem {
label: string;
value: any;
}
两种不同的api响应示例
1。
{key:'Istanbul', value: 'Test' }
{key:'London', value: 'Test' }
bindKey
将是key
bindValue
将是value
2。
{name:'Istanbul', id: 'Test' }
{name:'Istanbul', id: 'Test' }
bindKey
将是id
bindValue
将是name
答案 0 :(得分:1)
尝试
getItems(dataSourceUrl: string, bindKey: string, bindValue: string): Observable<SelectItem[]> {
return this.httpClient.get<SelectItem[]>(dataSourceUrl)
.pipe(map(x=> this.transformValue(bindKey,bindValue,x)));
}
transformValue(bindKey,bindValue,response):SelectItem[]{
const newResponse = [];
response.forEach(data => {
newResponse.push({
label: data[bindKey],
value: data[bindValue]
})
})
return newResponse;
}