Angular 5のすべてのルートでクエリパラメータをデフォルトで保持するにはどうすればよいですか? 質問する

Angular 5のすべてのルートでクエリパラメータをデフォルトで保持するにはどうすればよいですか? 質問する

背景:

ユーザーはパラメータを使用してアプリの URL を呼び出し、アプリを使用します。異なるルートを切り替える間、URL パラメータはブラウザのアドレス バーに表示されたままにする必要があります。


アプリの各ルートにクエリパラメータを保存する必要があります。つまり、URLが

www.example.com/app/test?id=326748798342&state=1

リンクを呼び出すには、[routerLink]="['/login']"次の URL を取得する必要があります。

www.example.com/app/login?id=326748798342&state=1

デフォルトでは、パラメータなしのログイン ルートを取得します。 を設定するという解決策が 1 つ見つかりましたqueryParamsHandling='merge'。ただし、これはテンプレート内のすべてのリンクとすべての navigation() 呼び出しを変更することになるため、非常に悪い解決策です。

デフォルトでこの問題を解決するよりクリーンな方法はありますか? アプリのルート配列で queryParamsHandling を設定するなど、何か他の方法がありますか?

ベストアンサー1

現在、これをグローバルに設定する方法はありません。 を使用するのがqueryParamsHandling唯一の選択肢のようです:

<a [routerLink]="['/login']" queryParamsHandling="preserve"></a>

またはルーターを使用する場合:

router.navigate('/login', { queryParamsHandling: "preserve" })

のもう 1 つの可能なオプションqueryParamsHandlingは ですmerge

おすすめ記事