From 3f44377f2f1d154354b98c5b3aed782ee0b50b12 Mon Sep 17 00:00:00 2001 From: vsavkin Date: Sat, 25 Jun 2016 12:07:47 -0700 Subject: [PATCH] fix(router): handle empty path with query params --- modules/@angular/router/src/url_tree.ts | 6 +++++- modules/@angular/router/test/url_serializer.spec.ts | 7 +++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/modules/@angular/router/src/url_tree.ts b/modules/@angular/router/src/url_tree.ts index 2631c8fc40..af830edf1f 100644 --- a/modules/@angular/router/src/url_tree.ts +++ b/modules/@angular/router/src/url_tree.ts @@ -277,7 +277,11 @@ class UrlParser { } parseRootSegment(): UrlSegment { - if (this.remaining === '' || this.remaining === '/') { + if (this.remaining.startsWith('/')) { + this.capture('/'); + } + + if (this.remaining === '' || this.remaining.startsWith('?')) { return new UrlSegment([], {}); } else { return new UrlSegment([], this.parseSegmentChildren()); diff --git a/modules/@angular/router/test/url_serializer.spec.ts b/modules/@angular/router/test/url_serializer.spec.ts index 4427b38677..db56102acb 100644 --- a/modules/@angular/router/test/url_serializer.spec.ts +++ b/modules/@angular/router/test/url_serializer.spec.ts @@ -91,6 +91,13 @@ describe('url serializer', () => { expect(url.serialize(tree)).toEqual('/one;a=true'); }); + it('should parse query params (root)', () => { + const tree = url.parse('/?a=1&b=2'); + expect(tree.root.children).toEqual({}); + expect(tree.queryParams).toEqual({a: '1', b: '2'}); + expect(url.serialize(tree)).toEqual('/?a=1&b=2'); + }); + it('should parse query params', () => { const tree = url.parse('/one?a=1&b=2'); expect(tree.queryParams).toEqual({a: '1', b: '2'});