如何从区分大小写的查询参数变量中获取值?
How to take the values from the case sensitive query param variables?
我有一个带有查询字符串 id 的 URL。但是,变量 id 可以作为 'id' 或 'Id' 在 URL.
根据我的理解,这两个将被区别对待。为了处理以下 URL,我编写了如所附屏幕截图中的代码:
enter image description here
除此之外,是否有任何简单的方法来处理区分大小写的变量并在 angular4 中正确取值?
正如@vogomatix 所说,您不应该使用不同名称的相同参数。但是,无论出于何种原因,您都可以像这样简化代码:
private findQueryParams() {
this._route.queryParams.subscribe((params: Params) => {
const idValue = params['id'] || params['Id'] || '0';
let id = Number(idValue);
});
}
这样您将使用 id
的值,如果不存在,则使用 Id
,如果也不存在,则使用 '0'
如果可以有更多组合,如您所说,那么您最好的选择是将参数克隆为小写版本:
function toLower(params: Params): Params {
const lowerParams: Params = {};
for (const key in params) {
lowerParams[key.toLowerCase()] = params[key];
}
return lowerParams;
}
有了这个:
private findQueryParams() {
this._route.queryParams.subscribe((params: Params) => {
const _params = toLower(params);
const idValue = params['id'] || '0';
let id = Number(params);
});
}
当然,每次从 Router
获取参数时都必须这样做,但这是不可避免的,因为基础缺陷在 Url 系统中。
如果您希望有一个显示特定 abc
项目的组件,那么您真的应该让您的网址 没有 查询参数并接受路由的概念相反
即而不是 http://xxx/abc?id=10 to show the abc
item with an id of 10 you should just be having a route http://xxx/abc/10
然后您可以将此路由添加为:
{ path: 'abc/:id', component: abcComponent },
其中 abcComponent 是显示相关项目的组件
我有一个带有查询字符串 id 的 URL。但是,变量 id 可以作为 'id' 或 'Id' 在 URL.
根据我的理解,这两个将被区别对待。为了处理以下 URL,我编写了如所附屏幕截图中的代码:
enter image description here
除此之外,是否有任何简单的方法来处理区分大小写的变量并在 angular4 中正确取值?
正如@vogomatix 所说,您不应该使用不同名称的相同参数。但是,无论出于何种原因,您都可以像这样简化代码:
private findQueryParams() {
this._route.queryParams.subscribe((params: Params) => {
const idValue = params['id'] || params['Id'] || '0';
let id = Number(idValue);
});
}
这样您将使用 id
的值,如果不存在,则使用 Id
,如果也不存在,则使用 '0'
如果可以有更多组合,如您所说,那么您最好的选择是将参数克隆为小写版本:
function toLower(params: Params): Params {
const lowerParams: Params = {};
for (const key in params) {
lowerParams[key.toLowerCase()] = params[key];
}
return lowerParams;
}
有了这个:
private findQueryParams() {
this._route.queryParams.subscribe((params: Params) => {
const _params = toLower(params);
const idValue = params['id'] || '0';
let id = Number(params);
});
}
当然,每次从 Router
获取参数时都必须这样做,但这是不可避免的,因为基础缺陷在 Url 系统中。
如果您希望有一个显示特定 abc
项目的组件,那么您真的应该让您的网址 没有 查询参数并接受路由的概念相反
即而不是 http://xxx/abc?id=10 to show the abc
item with an id of 10 you should just be having a route http://xxx/abc/10
然后您可以将此路由添加为:
{ path: 'abc/:id', component: abcComponent },
其中 abcComponent 是显示相关项目的组件