typescript Angular将数组转换为查询参数的对象

cpjpxq1n  于 6个月前  发布在  TypeScript
关注(0)|答案(1)|浏览(67)

我有一个Angular 12应用程序,其中我有一个对象数组,如下所示,并希望将其转换为queryParams,以便我可以路由到生成的URL。因此queryparams应该是这样的:
品牌:ABC:品牌:XYZ:尺寸:13 x18:尺寸:51 x49 x85

[{
 "values": ["ABC", "XYZ"],
 "show": true,
 "label": "Brand",
 }, {
 "values": ["13 x 18", "51x49x85"],
 "show": true,
 "label": "Size",
}]

字符串
我试着使用它,但它没有给出预期的结果。
params = new HttpParams({fromObject:{ r:myArray }})
我错过了什么吗?

13z8s7eq

13z8s7eq1#

如注解中所述,您的查询字符串无效。它应该是:
品牌=ABC&品牌=XYZ&尺寸= 13%20x%2018 &尺寸=51x49x85
HttpParamsOptions.fromObject不支持数组。
您需要重新定义数组元素并形成查询字符串。
1.从myArray开始迭代每个对象。
1.迭代values数组中的每个元素,并将其与键(label)合并组合。您应该对值进行编码。将每个元素与&合并。
1.用&连接每个元素。

let myArray = [{
    "values": ["ABC", "XYZ"],
    "show": true,
    "label": "Brand",
}, {
    "values": ["13 x 18", "51x49x85"],
    "show": true,
    "label": "Size",
}];

let queryString = myArray.map(x => x.values.map(y => `${x.label}=${encodeURI(y)}`).join('&'))
    .join('&');

console.log(queryString);

字符串

相关问题