ブログに戻る

Angular Routerでクエリパラメータを使用する

Angular Routerでクエリパラメータを使用する

はじめに

アプリケーションを構築する際、ルートの動作を記述するためにいくつかの引数やパラメータを渡したいシナリオがあるかもしれません。 Angularでは、これらはクエリパラメータと呼ばれ、これらはオプションです。クエリパラメータは、通常のルートパラメータ(必須パラメータであり、1つのルートにのみバインドされるもの)と混同しないようにしてください。

ルートパラメータとクエリパラメータの違いを明確にするために、商品を保存するアプリケーションを構築していると想像してください。次を使用して特定の製品を開くルートを作成できます。 product_id。また、次のようにクエリパラメータを指定することもできます。 read_onlyread_onlytrueに設定されている場合、ユーザーはレコードの表示のみが可能ですが、 read_onlyfalseの場合、ユーザーはレコードの編集も行うことができます。このように、1つのルートだけで編集と表示の両方のユースケースを処理できます。ここで、 product_idルートパラメータであり、オプションである read_onlyクエリ パラメータです。.

前提条件

この記事を完全に理解するには、Angularを使用したアプリケーション構築に慣れている必要があります。Angular Router、RouterLink、およびActivatedRouteの経験もあると役立ちます。

Router.navigateを使用したクエリパラメータの受け渡し

ルート間を遷移するために Router.navigateを使用している場合は、 queryParamsを使用してクエリパラメータを送信します。

上記の例で、訪問者に人気順でソートされた商品リストを表示させたい場合は、以下のコードを使用します。

このコードを使用すると、URLは次のようになります。

ただし、遷移時に複数のパラメータを渡す必要があるシナリオも存在します。たとえば、商品を人気順かつ価格順でソートしたい場合は、以下のコードを使用できます。

今回は、URLは次のようになります。

以上が、次のものを使用したクエリパラメータの設定方法のまとめです: queryParams.

queryParamsHandlingを使用したクエリパラメータの消失防止

ルート間を遷移するとき、パラメータは失われがちです。たとえば、引数 arg0を渡した場合、その後のルーティングが発生したときには渡されません。 queryParamsHandlingを使用し、値を preserveまたは merge.

に設定することで、パラメータを保存できます。上記の例で、ルートパラメータを保持したまま、訪問者をbrandsページへ、productページから、ルートパラメータ { order: 'popular' }を保持したまま遷移させたいとします。これを行うには、 queryParamsHandlingを使用し、それを preserve :

これにより、URLは次のようになります。

次に、前のルートのクエリパラメータ { order: 'popular' }を保持しつつ、新しいパラメータ { price: 'high-to-low' }を追加したいとします。その場合は、 queryParamsHandlingmerge:

上記のコードを使用すると、URLは次のようになります。

以上で、 queryParamsHandling を使用した、保持またはマージによるクエリパラメータの保存に関する説明を終わります。

RouterLinkを使用したクエリパラメータの渡し方

前述のリンクを考慮して、ナビゲーションに RouterLink ディレクティブを使用したい場合は、以下のように queryParams を使用してクエリパラメータを渡す必要があります。

ワンウェイバインディングを使用して、オブジェクトを queryParams に渡していることに注目してください。オブジェクト全体を queryParams .

さらに、これらのクエリパラメータを後続のナビゲーションに引き継ぎたい場合は、 queryParamsHandling オプションを使用できます。queryParamsHandling で指定可能なオプションは、 merge  および preserve:

ここでは、 queryParams の渡し方と、 queryParamsHandling によるパラメータの処理方法を、 RouterLink.

クエリパラメータの値の読み取り

これまでに、ルートでクエリパラメータを渡す方法を学びました。これらのパラメータはオプションであり、遷移先のページに情報を伝えるために使用されました。パラメータを送信することは一部にすぎず、URLからパラメータを読み取って使用することも必要です。

Angularでは、 ActivatedRoute クラスを使用してルートのクエリパラメータを読み取ります。 ActivatedRoute には、 queryParams という、現在のURLのパラメータを明らかにするObservableプロパティがあります。

次のURLを扱っていると仮定します。

コード内でクエリパラメータ order にアクセスするには、以下のコードを使用します。

コンソールには、クエリパラメータ order の値である popular が出力されます。複数のクエリパラメータがある場合は、 queryParamMap プロパティを使用できます。これは observable paramsMap オブジェクトを返します。

以下のように、複数のクエリパラメータを持つURLがある場合:

以下のコードを使用して、これらのクエリパラメータにアクセスできます:

ここで オブジェクトのスプレッド演算子 を使用すると、以下の結果が得られます:

これで、結果のルートからクエリパラメータにアクセスする方法を理解できたはずです。

結論

このチュートリアルでは、クエリパラメータとルートパラメータの違いについて説明しました。また、ルート間で引数をクエリパラメータとして渡し、さらに queryParamsqueryParamsHandlingRouter.navigateRouterLink とともに使用してページ上でそれらを取得する方法についても説明しました。また、 queryParamsqueryParamMapActivatedRoute で処理する方法についても学びました。.

AngularのベースにはJavaScriptが必要です。JavaScriptについての知識をさらに深めたい場合は、以下のブログをチェックしてください。

ハッピーコンピューティング!

author

Shreyas Patil

著者 · CloudSigma

Preslav DobrevはCloudSigmaのクリエイティブデザイナーであり、従来型および革新的なマーケティングチャネルを活用した一貫性のあるビジネスアイデンティティに注力しています。彼は芸術的なビジョンと戦略的マーケティングを融合させ、インパクトのあるブランドナラティブを生み出すことに長けています。

コメント

コメントはまだありません。最初のコメントを投稿しましょう。