Как сказал @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.