使用对象作为Angular get方法的参数

时间:2018-10-14 12:45:33

标签: angular typescript

我想使用数组作为Angular的get方法的参数。 我使用如下代码。

import { Http } from '@angular/http'; 
constructor(private http: Http) {}
this.http.get('http://localhost:5000/test',{
 params: {user}
})

用户定义为{id: number=101, name: string='john'}

我希望生成URL

http://localhost:5000/test?id=101&name=john

但是,生成的URL是

http://localhost:5000/test?user=%7B%id%22:%22YV1AMbiy%22,%22name%22:%22345678%22

4 个答案:

答案 0 :(得分:0)

从get方法的参数定义中删除{}。

import { Http } from '@angular/http'; 
constructor(private http: Http) {}
this.http.get('http://localhost:5000/test', params: user )

答案 1 :(得分:0)

它应该是params: {user},而不是params: user。否则,它将被编译为params: { 'user': user }

答案 2 :(得分:0)

您可以使用

let params = new HttpParams()
    .set('id', 101)
    .set('name','john');

 return this._HttpClient.get(URL, { params: params })

答案 3 :(得分:0)

您可以在Angular中使用JSON.stringify

this.http.get(
    `http://localhost:5000/test`,
    {
        params: { user: JSON.stringify(user) },
    },
);

在后端,您可以使用:

const user = JSON.parse(req.query.user)