fix(router): 'merge' queryParamHandling strategy should be able to remove query params (#19733)
Closes #18463, #17202 PR Close #19733
This commit is contained in:
parent
1db7c0d139
commit
a622e19df6
|
@ -408,6 +408,9 @@ export class Router {
|
||||||
} else {
|
} else {
|
||||||
q = preserveQueryParams ? this.currentUrlTree.queryParams : queryParams || null;
|
q = preserveQueryParams ? this.currentUrlTree.queryParams : queryParams || null;
|
||||||
}
|
}
|
||||||
|
if (q !== null) {
|
||||||
|
q = this.removeEmptyProps(q);
|
||||||
|
}
|
||||||
return createUrlTree(a, this.currentUrlTree, commands, q !, f !);
|
return createUrlTree(a, this.currentUrlTree, commands, q !, f !);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -463,9 +466,6 @@ export class Router {
|
||||||
navigate(commands: any[], extras: NavigationExtras = {skipLocationChange: false}):
|
navigate(commands: any[], extras: NavigationExtras = {skipLocationChange: false}):
|
||||||
Promise<boolean> {
|
Promise<boolean> {
|
||||||
validateCommands(commands);
|
validateCommands(commands);
|
||||||
if (typeof extras.queryParams === 'object' && extras.queryParams !== null) {
|
|
||||||
extras.queryParams = this.removeEmptyProps(extras.queryParams);
|
|
||||||
}
|
|
||||||
return this.navigateByUrl(this.createUrlTree(commands, extras), extras);
|
return this.navigateByUrl(this.createUrlTree(commands, extras), extras);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1366,7 +1366,7 @@ describe('Integration', () => {
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'someRoot',
|
selector: 'someRoot',
|
||||||
template:
|
template:
|
||||||
`<router-outlet></router-outlet><a routerLink="/home" [queryParams]="{q: 456}" queryParamsHandling="merge">Link</a>`
|
`<router-outlet></router-outlet><a routerLink="/home" [queryParams]="{removeMe: null, q: 456}" queryParamsHandling="merge">Link</a>`
|
||||||
})
|
})
|
||||||
class RootCmpWithLink {
|
class RootCmpWithLink {
|
||||||
}
|
}
|
||||||
|
@ -1378,7 +1378,7 @@ describe('Integration', () => {
|
||||||
|
|
||||||
const native = fixture.nativeElement.querySelector('a');
|
const native = fixture.nativeElement.querySelector('a');
|
||||||
|
|
||||||
router.navigateByUrl('/home?a=123');
|
router.navigateByUrl('/home?a=123&removeMe=123');
|
||||||
advance(fixture);
|
advance(fixture);
|
||||||
expect(native.getAttribute('href')).toEqual('/home?a=123&q=456');
|
expect(native.getAttribute('href')).toEqual('/home?a=123&q=456');
|
||||||
}));
|
}));
|
||||||
|
|
Loading…
Reference in New Issue