角HttpClient查询参数未在生产版本中显示

时间:2018-11-18 05:22:50

标签: angular http angular-http angular-httpclient

我有一个奇怪的问题,即我的get请求的查询参数在产品版本中不起作用,但在开发版本中起作用。

首先,我正在使用HttpModule,我升级到HttpClientModule,希望可以解决该问题。但不幸的是没有成功。

当切换到HttpClient时,我首先遇到了这个问题,即嵌套对象未正确传递。我通过对所有嵌套对象进行字符串化来解决此问题。

仍然,问题仍然存在,使用prod版本时没有传递任何查询参数。

这是我用来在将数据传递给HttpParams之前对其进行字符串化的方法:

stringifyObjects() {
  for (var prop in this) {
    let isObject = typeof this[prop] === 'object' && this[prop] !== null

    if(isObject) {
      this[prop] = JSON.stringify(this[prop]) as any;
    }
  }
}

这是我用来将参数传递给请求的代码

let params = new HttpParams({
  fromObject: data
})

this.http.get(url, {params: params, headers: headers})

此外,我尝试单独附加每个参数:

let httpParams = new HttpParams();

Object.keys(data).forEach(function (key) {
  httpParams = httpParams.append(key, data[key]);
});

return this.http.get(url, {params: httpParams, headers: headers})

所有结果相同。

遇到此问题的其他任何人,或者知道可能导致此问题的任何人?

谢谢。

编辑

我添加了这一行以检查问题的出处。

console.log('params.toString()', params.toString());

发现此params.toString()返回一个空字符串(在开发版本中,此函数正确返回该字符串)。我的处理方法是将字符串手动添加到url中,而不是将其作为参数传递。

不过,我还没有找到解决此问题或解决此问题的方法。

1 个答案:

答案 0 :(得分:0)

代替

<块引用>

let params = new HttpParams({ fromObject: data })

使用

let params = { fromObject:data }

let params = {};
params['fromObject']=data

对我有用 - angular 8.3.26