我在formcontrol中有一些类别,我将它们发送到一个字符串数组中,如下所示:
[1,4,6]
那是我的实际代码:
let categoryIds = new Array<String>() this.selectedCategories.forEach((value: string,key: string) => categoryIds.push(key)) let requestOptions = { params: new HttpParams() .set('title',this.createNewForm.controls['title'].value) .append('content',this.createNewForm.controls['content'].value) .append('categoryids',categoryIds.toString()),withCredentials: true }
但是我希望将它们作为一个对象数组发送,使用旧版本的角度Http我可以对该对象做一个foreach并追加每个类别.
但我不知道如何获得每个类别,并使每个类别附加到params.
我需要这样:
…categoryId=1&categoryId=4&categoryId=6…
解决方法
您可以使用.append将值附加到参数,并在处理值数组时为您提供所需的结果. .set用于设置或替换参数的值.所以你真的应该做更多类似的事情:
let httpParams = new HttpParams() .set('title',this.createNewForm.controls['title'].value) .set('content',this.createNewForm.controls['content'].value); categoryIds.forEach(id => { httpParams = httpParams.append('categoryId',id); }); const requestOptions = { params: httpParams,withCredentials: true };
这并不明显,但.append方法不会改变调用它的HttpParams对象,而是返回一个新对象.这就是我们在上面的例子中重新分配httpParams的原因.此外,可以在不先使用.set设置参数的情况下调用.append.