学习Angular ....下面是一个简单的练习http.get请求
let params = new URLSearchParams();
params.set('term', term);
params.set('media', 'music');
params.set('limit', '20');
let promise = new Promise((resolve, reject)=> {
this.http.get(this.apiRoot, {params})
.toPromise()
.then(
res => {
console.log(res.json());
}
)
});
return promise;
我收到以下错误:
Argument of type '{ params: URLSearchParams; }' is not assignable to parameter of type 'RequestOptionsArgs'.
Object literal may only specify known properties, and 'params' does not exist in type 'RequestOptionsArgs'.
如果我将params
更改为search
,则错误消失但当我检查文档https://angular.io/api/http/RequestOptionsArgs#params时,搜索和参数都是URLSearchParams类型...
这两个属性有什么区别?如何正确使用它们?为什么有两个?
谢谢
答案 0 :(得分:3)
为了避免这个错误,我建议做类似的事情:
let params = new URLSearchParams();
params.set('term', term);
params.set('media', 'music');
params.set('limit', '20');
let options = new RequestOptions({params});
let promise = new Promise((resolve, reject)=> {
this.http.get(this.apiRoot, options)
.toPromise()
.then(
res => {
console.log(res.json());
}
)
});
return promise;
同时查看Angular的source code我们可以看到search
和params
被视为相同,并且自Angular 4.0.0以来不推荐使用搜索,因此只需使用{{ 1}}。但是看到你正在使用Angular 5我建议切换并使用HttpClient,因为Http类已被弃用。
答案 1 :(得分:0)
正确使用:
let params = new URLSearchParams();
params.set('term', term);
params.set('media', 'music');
params.set('limit', '20');
let promise = new Promise((resolve, reject)=> {
this.http.get(this.apiRoot, {search: params})
.toPromise()
.then(
res => {
console.log(res.json());
}
)
});
return promise;