【发布时间】:2019-02-25 23:45:43
【问题描述】:
我在 Angular 服务中有一个 params 变量,其类型为 HttpParams。
当我这样做时
params.set('sortby', sortby.toString());
或
params.set('top', top.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();
【问题讨论】:
-
能否添加您生成的服务链接?如果有错误/警告消息或屏幕截图,也可以添加...
-
什么是 query.toString()?
-
还有你在尝试
params = params.set('query', "alo");而不仅仅是params.set('query', "alo");吗? -
做
let params = new HttpParams().set('query', 'myname')对我来说很好 -
您确定
params.query确实存在吗?尝试使用一些随机字符串设置查询参数,看看是否有效
标签: angular