fix(router): fix redirect to a URL with a param having multiple values (#16376)
fixes #16310 PR Close #16376
This commit is contained in:
parent
415a0f8047
commit
5d4b36f80f
|
@ -358,7 +358,13 @@ class ApplyRedirects {
|
|||
private createQueryParams(redirectToParams: Params, actualParams: Params): Params {
|
||||
const res: Params = {};
|
||||
forEach(redirectToParams, (v: any, k: string) => {
|
||||
res[k] = v.startsWith(':') ? actualParams[v.substring(1)] : v;
|
||||
const copySourceValue = typeof v === 'string' && v.startsWith(':');
|
||||
if (copySourceValue) {
|
||||
const sourceName = v.substring(1);
|
||||
res[k] = actualParams[sourceName];
|
||||
} else {
|
||||
res[k] = v;
|
||||
}
|
||||
});
|
||||
return res;
|
||||
}
|
||||
|
|
|
@ -41,6 +41,17 @@ describe('applyRedirects', () => {
|
|||
(t: UrlTree) => { expectTreeToBe(t, '/a/b/c'); });
|
||||
});
|
||||
|
||||
it('should support redirecting with to an URL with query parameters', () => {
|
||||
const config: Routes = [
|
||||
{path: 'single_value', redirectTo: '/dst?k=v1'},
|
||||
{path: 'multiple_values', redirectTo: '/dst?k=v1&k=v2'},
|
||||
{path: '**', component: ComponentA},
|
||||
];
|
||||
|
||||
checkRedirect(config, 'single_value', (t: UrlTree) => expectTreeToBe(t, '/dst?k=v1'));
|
||||
checkRedirect(config, 'multiple_values', (t: UrlTree) => expectTreeToBe(t, '/dst?k=v1&k=v2'));
|
||||
});
|
||||
|
||||
it('should handle positional parameters', () => {
|
||||
checkRedirect(
|
||||
[
|
||||
|
|
Loading…
Reference in New Issue