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 {
|
||||
q = preserveQueryParams ? this.currentUrlTree.queryParams : queryParams || null;
|
||||
}
|
||||
if (q !== null) {
|
||||
q = this.removeEmptyProps(q);
|
||||
}
|
||||
return createUrlTree(a, this.currentUrlTree, commands, q !, f !);
|
||||
}
|
||||
|
||||
|
@ -463,9 +466,6 @@ export class Router {
|
|||
navigate(commands: any[], extras: NavigationExtras = {skipLocationChange: false}):
|
||||
Promise<boolean> {
|
||||
validateCommands(commands);
|
||||
if (typeof extras.queryParams === 'object' && extras.queryParams !== null) {
|
||||
extras.queryParams = this.removeEmptyProps(extras.queryParams);
|
||||
}
|
||||
return this.navigateByUrl(this.createUrlTree(commands, extras), extras);
|
||||
}
|
||||
|
||||
|
|
|
@ -1366,7 +1366,7 @@ describe('Integration', () => {
|
|||
@Component({
|
||||
selector: 'someRoot',
|
||||
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 {
|
||||
}
|
||||
|
@ -1378,7 +1378,7 @@ describe('Integration', () => {
|
|||
|
||||
const native = fixture.nativeElement.querySelector('a');
|
||||
|
||||
router.navigateByUrl('/home?a=123');
|
||||
router.navigateByUrl('/home?a=123&removeMe=123');
|
||||
advance(fixture);
|
||||
expect(native.getAttribute('href')).toEqual('/home?a=123&q=456');
|
||||
}));
|
||||
|
|
Loading…
Reference in New Issue