クエリ文字列idの URL があります。ただし、変数idは、URL で「id」または「Id」として指定できます。
私の理解では、これら 2 つは異なる方法で扱われます。次の URL を処理するために、添付のスクリーンショットのようにコードを記述しました。
これ以外に、大文字と小文字を区別する変数を処理し、angular4 で適切に値を取得する簡単な方法はありますか?
クエリ文字列idの URL があります。ただし、変数idは、URL で「id」または「Id」として指定できます。
私の理解では、これら 2 つは異なる方法で扱われます。次の URL を処理するために、添付のスクリーンショットのようにコードを記述しました。
これ以外に、大文字と小文字を区別する変数を処理し、angular4 で適切に値を取得する簡単な方法はありますか?
@vogomatix が言ったように、異なる名前の同じパラメーターを持つべきではありません。ただし、何らかの理由で行う場合は、次のようにコードを少し簡略化できます。
private findQueryParams() {
this._route.queryParams.subscribe((params: Params) => {
const idValue = params['id'] || params['Id'] || '0';
let id = Number(idValue);
});
}
このように、 の値を使用します。id
存在Id
しない場合は 、存在しない場合は、'0'
あなたが言うように、より多くの組み合わせがある場合、最良のオプションは、params を小文字バージョンに複製することです。
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 システムにあるため、これは避けられません。