新しいクエリパラメータを使用して現在のルートに移動できます。これにより、ページは再読み込みされませんが、クエリパラメータが更新されます。
(コンポーネント内)のようなもの:
constructor(private router: Router) { }
public myMethodChangingQueryParams() {
const queryParams: Params = { myParam: 'myNewValue' };
this.router.navigate(
[],
{
relativeTo: activatedRoute,
queryParams: queryParams,
queryParamsHandling: 'merge', // remove to replace all query params by provided
});
}
ページをリロードしない一方で、ブラウザの履歴に新しいエントリをプッシュすることに注意してください。そこに新しい値を追加するのではなく、履歴でそれを置き換えたい場合は、を使用できます{ queryParams: queryParams, replaceUrl: true }
。
編集:コメントですでに指摘したように、私の元の例で[]
はrelativeTo
プロパティが欠落していたため、クエリパラメータだけでなく、ルートも変更された可能性があります。this.router.navigate
この場合の適切な使用法は次のとおりです。
this.router.navigate(
[],
{
relativeTo: this.activatedRoute,
queryParams: { myParam: 'myNewValue' },
queryParamsHandling: 'merge'
});
新しいパラメータ値をに設定するnull
と、URLからパラメータが削除されます。
[]
の代わりに、['.']
それを動作させるために