Angular5 RequestOptionsArgs搜索& param有什么区别?

时间:2017-12-05 10:07:26

标签: angular

学习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类型...

这两个属性有什么区别?如何正确使用它们?为什么有两个?

谢谢

2 个答案:

答案 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我们可以看到searchparams被视为相同,并且自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;