Angular отправка массива объектов (многомерного массива) в запросе GET - PullRequest
0 голосов
/ 27 января 2020

Проблема : Как отправить запрос GET с Angular HttpClient с массивом объектов, например

[{a: "a", b: "b"}, {a: "c", b: "d"}];

в формате FormData, например

test[][test]: a
test[][test]: c
test[][lol]: b
test[][lol]: d

, поэтому конечный результат операции должен быть (в виде URL-адреса):

GET /?test[][test]=a&test[][test]=c&test[][lol]=b&test[][lol]=d

Вопрос : мне удалось построить рабочее решение, но оно выглядит хакерским, и эта проблема выглядит вроде распространено, поэтому должно быть лучшее и более чистое решение для элегантного решения этой проблемы с использованием инструментов Angular. Или отправка данных такого формата в этом формате - это вообще плохая практика?


import { HttpClient, HttpParams } from "@angular/common/http";

constructor(private readonly http: HttpClient) {}

const a = [{a: "a", b: "b"}, {a: "c", b: "d"}];

let p = new HttpParams();

a.forEach(a => {
  p = p.append('test[][test]', a.a);
  p = p.append('test[][lol]', a.b);
});

this.http.get('', {params: p}).subscribe((data) => console.log);

...