fix(router): ignore null or undefined query parameters (#12333)

This commit is contained in:
Dzmitry Shylovich
2016-11-11 01:41:19 +03:00
committed by Victor Berchet
parent 79383ce150
commit 3052fb234f
2 changed files with 40 additions and 3 deletions

View File

@ -487,6 +487,18 @@ describe('Integration', () => {
expect(fixture.nativeElement).toHaveText('query: 2 fragment: fragment2');
})));
it('should ignore null and undefined query params',
fakeAsync(inject([Router], (router: Router) => {
const fixture = createRoot(router, RootCmp);
router.resetConfig([{path: 'query', component: EmptyQueryParamsCmp}]);
router.navigate(['query'], {queryParams: {name: 1, age: null, page: undefined}});
advance(fixture);
const cmp = fixture.debugElement.children[1].componentInstance;
expect(cmp.recordedParams).toEqual([{name: '1'}]);
})));
it('should push params only when they change', fakeAsync(inject([Router], (router: Router) => {
const fixture = createRoot(router, RootCmp);
@ -2436,6 +2448,15 @@ class QueryParamsAndFragmentCmp {
}
}
@Component({selector: 'empty-query-cmp', template: ``})
class EmptyQueryParamsCmp {
recordedParams: Params[] = [];
constructor(route: ActivatedRoute) {
route.queryParams.forEach(_ => this.recordedParams.push(_));
}
}
@Component({selector: 'route-cmp', template: `route`})
class RouteCmp {
constructor(public route: ActivatedRoute) {}
@ -2529,7 +2550,8 @@ function createRoot(router: Router, type: any): ComponentFixture<any> {
RouteCmp,
RootCmp,
RelativeLinkInIfCmp,
RootCmpWithTwoOutlets
RootCmpWithTwoOutlets,
EmptyQueryParamsCmp
],
@ -2554,7 +2576,8 @@ function createRoot(router: Router, type: any): ComponentFixture<any> {
RouteCmp,
RootCmp,
RelativeLinkInIfCmp,
RootCmpWithTwoOutlets
RootCmpWithTwoOutlets,
EmptyQueryParamsCmp
],
@ -2580,7 +2603,8 @@ function createRoot(router: Router, type: any): ComponentFixture<any> {
RouteCmp,
RootCmp,
RelativeLinkInIfCmp,
RootCmpWithTwoOutlets
RootCmpWithTwoOutlets,
EmptyQueryParamsCmp
]
})
class TestModule {