如何使用路由器文件中的查询参数进行重定向
how to redirect with query parameters from router file
我有一个接受查询参数的路由器,它可以包含或不包含语言的查询参数,例如:?lang=de
当我使用路由器导航时,它起作用了:
this.router.navigate(['/routeToNavigate'], { queryParams: queryParams })
我的问题出在路由文件中:
const APP_ROUTES: Routes = [
{
path: '',
canActivate: [ValidUserGuard],
runGuardsAndResolvers: 'always',
children: [
{
path: '',
redirectTo: '/main',
pathMatch: 'full'
}
]
},
{path: '**', redirectTo: ''}
];
我的问题出在这个 redirectTo 上,我在这里丢失了 queryParams(如果它们存在的话)。
例如,不起作用的网址是:
http://mypage.com?lang=de
http://mypage.com/invalidRoute?lang=de
如何在此 "redirectTo" 中包含 queryParms?
我解决了,如果有人有兴趣:
{
path: '',
children: [],
canActivate: [RedirectorGuard],
pathMatch: 'full'
},
export class RedirectorGuard implements CanActivate {
constructor(
private router: Router
) {}
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise<boolean> {
const queryParams = route.queryParams.lang ? {
lang: route.queryParams.lang
} : {};
return this.router.navigate(['/main'], { queryParams: queryParams })
.then(() => true);
}
}
我有一个接受查询参数的路由器,它可以包含或不包含语言的查询参数,例如:?lang=de
当我使用路由器导航时,它起作用了:
this.router.navigate(['/routeToNavigate'], { queryParams: queryParams })
我的问题出在路由文件中:
const APP_ROUTES: Routes = [
{
path: '',
canActivate: [ValidUserGuard],
runGuardsAndResolvers: 'always',
children: [
{
path: '',
redirectTo: '/main',
pathMatch: 'full'
}
]
},
{path: '**', redirectTo: ''}
];
我的问题出在这个 redirectTo 上,我在这里丢失了 queryParams(如果它们存在的话)。
例如,不起作用的网址是:
http://mypage.com?lang=de http://mypage.com/invalidRoute?lang=de
如何在此 "redirectTo" 中包含 queryParms?
我解决了,如果有人有兴趣:
{
path: '',
children: [],
canActivate: [RedirectorGuard],
pathMatch: 'full'
},
export class RedirectorGuard implements CanActivate {
constructor(
private router: Router
) {}
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise<boolean> {
const queryParams = route.queryParams.lang ? {
lang: route.queryParams.lang
} : {};
return this.router.navigate(['/main'], { queryParams: queryParams })
.then(() => true);
}
}