fix(router): navigation should not preserve query params and fragment by default
BREAKING CHANGE Previously both imperative (router.navigate) and declarative (routerLink) navigations would preserve the current query params and fragment. This behavior turned out to be confusing. This commit changes it. Now, neither is preserved by default. To preserve them, you need to do the following: router.naviage("newUrl", {preserveQueryParams: true, preserveFragment: true}) <a routerLink="newUrl" preserveQueryParams preserveFragment></a>
This commit is contained in:
@ -45,6 +45,8 @@ export interface NavigationExtras {
|
||||
relativeTo?: ActivatedRoute;
|
||||
queryParams?: Params;
|
||||
fragment?: string;
|
||||
preserveQueryParams?: boolean;
|
||||
preserveFragment?: boolean;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -227,10 +229,13 @@ export class Router {
|
||||
* router.createUrlTree(['../../team/44/user/22'], {relativeTo: route});
|
||||
* ```
|
||||
*/
|
||||
createUrlTree(commands: any[], {relativeTo, queryParams, fragment}: NavigationExtras = {}):
|
||||
UrlTree {
|
||||
createUrlTree(
|
||||
commands: any[], {relativeTo, queryParams, fragment, preserveQueryParams,
|
||||
preserveFragment}: NavigationExtras = {}): UrlTree {
|
||||
const a = relativeTo ? relativeTo : this.routerState.root;
|
||||
return createUrlTree(a, this.currentUrlTree, commands, queryParams, fragment);
|
||||
const q = preserveQueryParams ? this.currentUrlTree.queryParams : queryParams;
|
||||
const f = preserveFragment ? this.currentUrlTree.fragment : fragment;
|
||||
return createUrlTree(a, this.currentUrlTree, commands, q, f);
|
||||
}
|
||||
|
||||
/**
|
||||
|
Reference in New Issue
Block a user