fix(router): fix query parameters with multiple values (#15129)

fixes #14796
This commit is contained in:
Victor Berchet
2017-03-15 15:27:19 -07:00
committed by Chuck Jazdzewski
parent 3f38c6fdcd
commit 029d0f25e5
3 changed files with 35 additions and 17 deletions

View File

@ -40,13 +40,18 @@ function isMatrixParams(command: any): boolean {
function tree(
oldSegmentGroup: UrlSegmentGroup, newSegmentGroup: UrlSegmentGroup, urlTree: UrlTree,
queryParams: Params, fragment: string): UrlTree {
if (urlTree.root === oldSegmentGroup) {
return new UrlTree(newSegmentGroup, stringify(queryParams), fragment);
let qp: any = {};
if (queryParams) {
forEach(queryParams, (value: any, name: any) => {
qp[name] = Array.isArray(value) ? value.map((v: any) => `${v}`) : `${value}`;
});
}
return new UrlTree(
replaceSegment(urlTree.root, oldSegmentGroup, newSegmentGroup), stringify(queryParams),
fragment);
if (urlTree.root === oldSegmentGroup) {
return new UrlTree(newSegmentGroup, qp, fragment);
}
return new UrlTree(replaceSegment(urlTree.root, oldSegmentGroup, newSegmentGroup), qp, fragment);
}
function replaceSegment(