1. ホーム
  2. angular

[解決済み] Angular2 ルーターがクエリ文字列を保持する

2023-02-10 13:35:46

質問

Angular2 (v2.0.1) のアプリケーションで、ルータを利用するものを書きました。ウェブサイトはいくつかのクエリ文字列パラメータで読み込まれるため、完全なURLは最初は次のようになります。

https://my.application.com/?param1=val1&param2=val2&param3=val3

ルート設定に、空のルートをリダイレクトするエントリーがあります。

const appRoutes: Routes = [
    {
        path: '',
        redirectTo: '/comp1',
        pathMatch: 'full'
    },
    {
        path: 'comp1',
        component: FirstComponent
    },
    {
        path: 'comp2',
        component: SecondComponent
    }
];

私の問題は、アプリがブートストラップされた後、URLはクエリパラメータを含まなくなり、代わりに次のようになることです。

https://my.application.com/comp1

ナビゲート時に最初のクエリ文字列を保持するようにルータを設定する方法はありますか?

ありがとうございます。

ルーカス

どのように解決するのですか?

routesの設定で定義する方法はないと思います。

現在サポートされているのは routerLink を有効にするために、命令型ナビゲーション

空のパスルートにガードを追加することができます。ここで、ガードナビゲーションで /comp1 ルートへのナビゲーションが行われます。

router.navigate(['/comp1'], { preserveQueryParams: true }); //deprecated. see update note

router.navigate(['/comp1'], { queryParamsHandling: "merge" });

には PR を設定できるように preserveQueryParams をグローバルに設定できるようにしました。

更新情報です。 から https://angular.io/api/router/NavigationExtras preserveQueryParams は非推奨です。代わりに queryParamsHandling を使ってください。