Jua*_*ker 5 typescript angular angular-httpclient
我在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
}
Run Code Online (Sandbox Code Playgroud)
但是我希望将它们作为一个对象数组发送,使用旧版本的角度Http我能够对该对象做一个foreach并追加每个类别.但我不知道如何获得每个类别,并使每个类别附加到params.我需要这样:
...的categoryId = 1&的categoryId = 4&的categoryId = 6 ...
Ric*_*key 15
您可以使用.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
};
Run Code Online (Sandbox Code Playgroud)
这并不明显,但该.append方法不会改变HttpParams调用它的对象,而是返回一个新对象.这就是我们重新分配httpParams上面例子的原因.此外,.append可以在不首先使用.set设置参数的情况下调用.
您可以创建包含所有参数的对象,并将该对象传递给创建时的fromObject属性HttpParamOptonsHttpParams
let data={
firstname:'xyz',
lastname:'pqr'
}
let body=new HttpParams({fromObject:data})
this.http.post(URL, body, this.header).subscribe(data => {
....
}, error => {
....
})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12782 次 |
| 最近记录: |