Angular2中URLSearchParams()的奇怪问题

时间:2016-04-19 20:25:36

标签: url angular

我有一个与URLSearchParams()一起出现的奇怪问题,只有在定义var search时才会起作用(即如果我将变量名称更改为var otherName)它就不起作用!!

但是,出于某种原因,只有在名称为search时才有效!!这根本不合逻辑。

对这里发生的事情有什么看法?

  constructor(http) {
  this.http = http;
  this.genre = null;
  this.dishes = null;

  //this one works fine
  var search = new URLSearchParams();
  search.set('order', '-ordersNo');

  //Here is the issue (to make it work, I need to remove the previous search declaration, and rename the below var limit to search)
  var limit = new URLSearchParams();
  limit.set('limit', '2');

  this.http.get('https://example.com/classes/Mn', { limit }).subscribe(data => {
  this.dishes = data.json().results;
  });


  this.http.get('https://example.com/classes/Genre',{ search }).subscribe(data => {
  this.genre = data.json().results;
  });

2 个答案:

答案 0 :(得分:1)

我猜你其实想要这样:

{ search: search }

//and 

{ search: limit }
http get方法的

options参数必须具有以下签名:

export interface RequestOptionsArgs {
    url?: string;
    method?: string | RequestMethod;
    search?: string | URLSearchParams;
    headers?: Headers;
    body?: string;
}

{limit }实际上与{ limit: limit }相同。

答案 1 :(得分:1)

事实上,它是JavaScript的捷径:{ search }相当于{ search: search }{ limit }相当于{ limit: limit }

它适用于第一种情况,因为Angular2期望search属性来定义查询参数。如果您要使用limit变量,则无法使用此快捷方式,您需要使用以下内容:{ search: limit }