3

クエリ文字列idの URL があります。ただし、変数idは、URL で「id」または「Id」として指定できます。

私の理解では、これら 2 つは異なる方法で扱われます。次の URL を処理するために、添付のスクリーンショットのようにコードを記述しました。

http://xxx/abc?id=10

http://xxx/abc?Id=10

ここに画像の説明を入力

これ以外に、大文字と小文字を区別する変数を処理し、angular4 で適切に値を取得する簡単な方法はありますか?

4

2 に答える 2

7

@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 システムにあるため、これは避けられません。

于 2018-04-30T10:12:19.423 に答える