0

我正在为 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()

4

0 回答 0