背景:
ユーザーはパラメータを使用してアプリの 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
。