我有一个奇怪的问题,即我的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中,而不是将其作为参数传递。
不过,我还没有找到解决此问题或解决此问题的方法。
答案 0 :(得分:0)
代替
<块引用>let params = new HttpParams({ fromObject: data })
使用
let params = { fromObject:data }
或
let params = {};
params['fromObject']=data
对我有用 - angular 8.3.26