目前,我正在做这样的事情...
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)});
答案 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 } });