Dmi*_*nko 13 parameters angular
这是我的演员阵列:
['Elvis', 'Jane', 'Frances']
Run Code Online (Sandbox Code Playgroud)
如何在HttpClient中的查询字符串中传递此数组?
我试着用:
1)
let params = new HttpParams();
params = Params.append('actors[]', ['Elvis', 'Jane', 'Frances']);
this.http.get(url, { params: Params });
Run Code Online (Sandbox Code Playgroud)
2)
let params = new HttpParams().set('actors[]', ['Elvis', 'Jane', 'Frances']);
this.http.get(url, { params: Params });
Run Code Online (Sandbox Code Playgroud)
3)
let Params = new HttpParams();
Params = Params.append('actors[]', 'Jane');
Params = Params.append('actors[]', 'Elvis');
Params = Params.append('actors[]', 'Frances');
this.http.get(url, { params: Params });
Run Code Online (Sandbox Code Playgroud)
1和2不起作用,因为打字稿给出:
[ts]'string []'类型的参数不能分配给'string'类型的参数.
3只发送一个项目'actors []':'Frances'
Ven*_*omy 24
我认为最好的方法是将它们添加到参数作为a string并让你的后端将其转换回array或list.
let actorList = ['Elvis', 'Jane', 'Frances']
let params = new HttpParams();
params = params.append('actors', actorList.join(', '));
this.http.get(url, { params: params });
Run Code Online (Sandbox Code Playgroud)
您可以简单地使用 JSON.stringify()
let params = new HttpParams();
const actors = ['Elvis', 'Jane', 'Frances'];
params.append('actors', JSON.stringify(actors);
this.http.get(url, { params });
Run Code Online (Sandbox Code Playgroud)
小智 7
const actors = ['Elvis', 'Jane', 'Frances'];
let params = new HttpParams();
for (const actor of actors) {
params = params.append('actors', actor);
}
this.http.get(url, { params: params });
Run Code Online (Sandbox Code Playgroud)
小智 6
适用于Angular 6.0.6:
private getParams(query) {
let params: HttpParams = new HttpParams();
for (const key of Object.keys(query)) {
if (query[key]) {
if (query[key] instanceof Array) {
query[key].forEach((item) => {
params = params.append(`${key.toString()}[]`, item);
});
} else {
params = params.append(key.toString(), query[key]);
}
}
}
return params;
Run Code Online (Sandbox Code Playgroud)
}
结果:
/api/message?page=1&per=2&order_by=name&order_direction=asc&base_object%5B%5D=2&base_object%5B%5D=1
Run Code Online (Sandbox Code Playgroud)
这对我有用。
let params = new HttpParams();
['Elvis', 'Jane', 'Frances'].forEach((actorName:string) =>{
params = params.append(`actors[]`, actorName);
})
Run Code Online (Sandbox Code Playgroud)
或者
let params = new HttpParams();
let actorsArray:Array<string> = ['Elvis', 'Jane', 'Frances'];
actorsArray.forEach((actorName:string) =>{
params = params.append(`actors[]`, actorName);
})
Run Code Online (Sandbox Code Playgroud)
根据界面你可以这样做
const params = new HttpParams({
fromObject: { 'actors[]': ['Elvis', 'Jane', 'Frances'] }
});
this.http.get(url, { params });
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
23352 次 |
| 最近记录: |