fix(router): 'merge' queryParamHandling strategy should be able to remove query params (#19733)

Closes #18463, #17202

PR Close #19733
This commit is contained in:
Mark Kennedy 2017-10-15 14:48:20 -05:00 committed by Jason Aden
parent 1db7c0d139
commit a622e19df6
2 changed files with 5 additions and 5 deletions

View File

@ -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);
} }

View File

@ -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');
})); }));