我有一个包含查询字符串 id 的网址。但是,变量 id 可以作为' id'或网址中的' Id' 。
根据我的理解,这两个将被区别对待。为了处理以下网址,我编写了代码,如附带的屏幕截图所示:
除此之外,是否有任何简单的方法来处理区分大小写的变量并在angular4中正确获取值?
答案 0 :(得分:1)
正如@vogomatix所说,你不应该有不同名字的同一个param。但是,如果你做了什么原因,你可以简单地将代码简化为:
private findQueryParams() {
this._route.queryParams.subscribe((params: Params) => {
const idValue = params['id'] || params['Id'] || '0';
let id = Number(idValue);
});
}
这样您就可以使用id
的值,如果不存在,则使用Id
,如果不存在,那么您将使用{ {1}}
如果可以有更多组合,正如您所说,那么您最好的选择是将参数克隆为小写版本:
'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);
});
}
获得参数时,你都会得到这个,但这是不可避免的,因为基本缺陷在于Url系统。
答案 1 :(得分:0)
如果您希望有一个显示特定abc
项目的组件,那么您应该确实拥有没有查询参数的网址,而是拥抱路由的概念
即。而不是让http://xxx/abc?id=10显示ID为10的abc
项,您应该只有一条路线http://xxx/abc/10
然后您将此路线添加为:
{ path: 'abc/:id', component: abcComponent },
其中abcComponent是显示相关项
的组件