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);