Angular6:如何在单行中使用HttpParams设置和传递参数?

时间:2018-11-09 19:59:04

标签: angular http angular5 angular6

目前,我正在做这样的事情...
let params = new HttpParams().set('search', search); return this.http.get('/api/object/', {params});

有没有办法我可以一行而不是两条呢?
像这样的东西(这不起作用,给出类型错误):
return this.http.get('/api/object/', {new HttpParams().set('search', search)});

参考:https://angular.io/api/common/http/HttpParams

2 个答案:

答案 0 :(得分:0)

问题:

return this.http.get('/api/object/', {params}); 

创建一个options对象,其键为params,其值由params变量保持。这基本上是以下内容的简写语法:

return this.http.get('/api/object/', { params: params }); 

ES6已经处理过了。当key的名称和包含该键的value的变量相同时(基本上都是params),您就可以使用它了。

但是在下一段代码中做的事情不会隐式地完成。因此,您必须在要传递给params的第二个参数的options对象中明确提及键的名称(即get

FIX:

在要传递的对象中将键名添加为params作为get的第二个参数

return this.http.get('/api/object/', { params: new HttpParams().set('search', search) });

答案 1 :(得分:0)

{ params }{ params: params }的快捷方式。它之所以起作用,是因为在此之前定义了一个名为params的局部变量。

您需要的只是

return this.http.get('/api/object/', {params: new HttpParams().set('search', search)});

或者简单地

return this.http.get('/api/object/', { params: { search: search} });

或使用与params相同的快捷方式:

return this.http.get('/api/object/', { params: { search } });