Angular 角度HttpClient,参数名称为';查询';设置失败
我在角度服务中有一个Angular 角度HttpClient,参数名称为';查询';设置失败,angular,Angular,我在角度服务中有一个params变量,类型为HttpParams 当我这样做的时候 params.set('sortby', sortby.toString()); 或 这两种方法都起作用,并被添加到params变量中,并传递到API 然而,问题是当我在API中将路由参数定义为'query'时。我不明白为什么我的代码 params.set('query', query.toString()); 根本不工作。它只是没有被添加到参数列表中。我认为这与名称'query'有关。目前还不能选择更新AP
params
变量,类型为HttpParams
当我这样做的时候
params.set('sortby', sortby.toString());
或
这两种方法都起作用,并被添加到params
变量中,并传递到API
然而,问题是当我在API中将路由参数定义为'query'
时。我不明白为什么我的代码
params.set('query', query.toString());
根本不工作。它只是没有被添加到参数列表中。我认为这与名称'query'
有关。目前还不能选择更新API
有没有办法让'query'
工作
API调用:
尝试直接从chrome控制台更新到请求。即使这样,我也找不到查询参数
编辑:newParams()
返回带有正确编解码器的HttpParams
protected newParams(): HttpParams {
return new HttpParams({
encoder: PARAMETER_CODEC
});
}
编码器是
class ParameterCodec implements HttpParameterCodec {
encodeKey(key: string): string {
return encodeURIComponent(key);
}
encodeValue(value: string): string {
return encodeURIComponent(value);
}
decodeKey(key: string): string {
return decodeURIComponent(key);
}
decodeValue(value: string): string {
return decodeURIComponent(value);
}
}
const PARAMETER_CODEC = new ParameterCodec();
如果您想知道为什么没有传递任何参数,那么在引用的文档中有一个关键提示 这个类是不可变的-所有的变异操作都返回一个新的 例如 基本上,您应该能够通过如下链接发送参数/查询,以拥有多个参数:
const params = new HttpParams()
.set('query', 'value here')
.set('another_param', 'value_here')
.set('sortby', sortby.toString());
return this.httpClient.get('my url', { params })
如果要有条件地附加HttpParams
,请改用此变量,例如:
let params = new HttpParams();
if ( limit ) {
params = params.set('limit', String(limit));
}
params = params.set('search', keyword);
您可以添加生成的服务链接吗?如果有错误/警告消息或屏幕截图,还可以添加…什么是query.toString()?您是否正在尝试
params=params.set('query','alo')代码>不仅仅是参数集('query','alo')
?执行让params=new-HttpParams().set('query','myname')
对我来说很好,你确定params.query
确实存在吗?尝试使用一些随机字符串设置查询参数,看看是否works@nircraft他可以尝试为查询参数链接集合,结果可以告诉我们更多。感谢任何方式,但这不会让我解决我的问题,因为我必须检查null@TBA,请尝试在原问题中解释更多关于该问题的内容,还要确保分享一些您曾经尝试过的代码片段<代码>参数=新参数()
不起作用。如果是你的代码片段,而不是截图,你会更快地得到答案。
let params = new HttpParams();
if ( limit ) {
params = params.set('limit', String(limit));
}
params = params.set('search', keyword);