私のAngular 2アプリには、ユーザが独立した、しかし文脈上関連するコンポーネントのグループから選択できるタブエリアがあります。Angular AppでRouterLink経由で動的URLパラメータを処理する
<a class="page-content-header-item" routerLink="/page1" routerLinkActive="selected">Page 1</a>
これがうまく働いていた。彼らはこのように、routerLinkで定義されているものに応じて、これらのリンクのいずれか、関連するコンポーネントのロードをクリックします。しかし、それ以来、ユーザーが選択したさまざまなフィルタ選択をURLのパラメータとして保存するためにアプリケーションを構築しました。この方法でコンポーネントを再読み込みすると、最新の選択内容が引き続き表示され、データに適用されます。
http://somesite.com/page1;language_filter=true;language_selection=English
、このためのコンポーネントのコードは次のようになります:
public changePage(page, value, type, body)
{
this.onUserSelection(value, type, body, page);
this.route.params.subscribe(
(params: any) => {
this.page = params['page'];
this.language_filter = params['language_filter'];
this.language_selection = params['language_selection'];
}
);
this.router.navigate(
['/page1', {
page: page,
language_filter: this.language_filter,
language_selection: this.language_selection,
}]);
}
これはあるメインナビゲーションメソッド、適していますユーザーは、いくつかのフィルタ選択をした後にそうURLは次のようになります。
{ path: 'page1', component: Page1Component, canActivate: [AuthGuard], data: {contentId: 'page1'} }
は、しかし、私が述べたこのタブ領域のために、それはハードコードされたrouterLink額面に応じてコンポーネントをロードしています:それぞれが次のようになり、ルーティングファイルを介して達成午前だから、ユーザが他の方法を利用するのではなく、利用者が戻るようにコンポーネントに戻ると、実際にはURLパラメータがオーバーライドされることに気付く。<a class="page-content-header-item" routerLink="/page1" routerLinkActive="selected">Page 1</a>
...これにより、以前に追加されたURLパラメータが消去されます。それはいくつかの動的変数が可能になりますので
<a class="page-content-header-item" routerLink="/page1" routerLinkActive="selected">Page 1</a>
...:
だから、私の質問があり、私はこのコードを編集することができます方法はありますか?または、このタブ領域でナビゲーションを処理する新しい方法を見つける必要がありますか?
あなたは 'queryParams'を使ってみましたか? –
routerLinkではどういう意味ですか?どのように見えるのでしょうか? – Muirik
例を設定する時間を与えてください。しかし基本的なことは、 'queryParams'ディレクティブを使って単純なオブジェクトとしてルートにいくつかのパラメータを追加することができるということです(ルート定義でそれらを定義する必要はありません)...スマートコンポーネントのリゾルバを使用してルートスナップショットを取得し、コンポーネント内に登録し、フォームと子コンポーネントを 'ngOnInit'で更新します。 '' 'Link' '' と、それは、出力は次のようになりますでしょうルート: 'localhostを:?4200/fooの動物=犬&繁殖= poodle' –