我正在为 HTTP 服务中的 ES6 地图数据类型而苦苦挣扎。
在我的服务中,我返回一个包含地图的 Observable:
getLayout(dims: Map<number, [number, number]>, rels: [number, number][]): Observable<Map<number, [number, number]>> {
// ES6 Map can not be json-stringified
let jsonDims: { [x: number]: [number, number]; } = {}
dims.forEach((dim, gid) => {
jsonDims[gid] = dim
});
const data = { "dims": jsonDims, "rels": rels }
return this.http.post<Map<number, [number, number]>>(
environment.backend_url + '/layout',
JSON.stringify(data),
this.options
).pipe(catchError(err => {
console.error(err.message)
return throwError("Error occurred while requesting layout.")
}));
}
但是,当我尝试处理组件中的响应数据时:
this.layoutService.getLayout(dims, rels).subscribe(layout => {
console.log(layout); // works: I see the data, structured correctly
for (const [gid, pos] of layout) { // fails
console.log(gid)
console.log(pos)
}
});
我收到如下错误消息:
布局不可迭代
布局没有属性“get”
所以它似乎layout
不是一个有效的地图,那么我将如何http.post<Map<number, [number, number]>>()
实际返回一个可以迭代或使用的地图对象get()
?