angular - 如何在 rxjs/operator 中使用 map
问题描述
API调用将数据作为列表返回IAthing
,我想映射到列表Select2OptionData
[
{
"prop1": 'vbn',
"prop2": 'abc'
},
{
"prop1": 'fgh',
"prop2": 'tyyty'
}
]
在来自文件的这个方法中,service
我得到这个错误:
[ts] Type 'Observable<Select2OptionData>' is not assignable to type 'Observable<Select2OptionData[]>'
getMethod(
term: string = '',
page: number = 0
): Observable<Select2OptionData[]> {
return this.http
.get(`/api/something/foobar?q=${term}&page=${page}`)
.pipe(
map((data: IAthing) => {
return <Select2OptionData>{ id: data.prop1.toString(),
text: data.prop2 };
}),
catchError(this.handleError)
);
}
Select2OptionData
界面
export interface Select2OptionData {
id: string;
text: string;
disabled?: boolean;
children?: Array<Select2OptionData>;
additional?: any;
}
export interface IAthing {
prop1: string;
prop2: string;
}
我在这里做错了什么
解决方案
这是一个签名错误。
你期待
Observable<Select2OptionData[]>
这是一个对象数组,但你返回
<Select2OptionData>{ id: data.prop1.toString(),
text: data.prop2 }
这是一个对象。更改您的地图功能或您的签名。
要返回一个数组:
.pipe(
map(response => response.map(item => ({ id: item.prop1, text: item.prop2 })))
)
推荐阅读
- python - 将列表与字典的每个值进行比较(字符串列表)
- com - 注册 Visual Fox Pro 时 DllRegisterServer 失败,错误代码 0x80004005
- python - 如何在 pyglet 中制作 3D?
- python - Py2Neo 没有正确创建日期时间数据类型?
- javascript - 文档事件“onload”总是被触发?
- typescript - 创建地图实例
- javascript - 如何转换 ReadonlyArray
去任何[]? - firebase - 从过期的 Firebase 身份验证令牌中获取 UID?
- karate - 空手道 - 从响应中获取所有特定字段值
- powershell - 将排序数据的排序部分输出到变量?