Tengo problemas con el tipo de datos del mapa ES6 en mi servicio HTTP.
En mi Servicio devuelvo un Observable, que contiene un Mapa:
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.") })); }Sin embargo, cuando trato de procesar los datos de respuesta en mi componente:
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) } });Recibo mensajes de error como:
diseño no iterable
el diseño no tiene atributo 'obtener'
Entonces, parece que el layout no es un mapa válido, entonces, ¿cómo haría que http.post<Map<number, [number, number]>>() realmente devuelva un Map-object sobre el cual puedo iterar o usar get() ?