如何使用路由器文件中的查询参数进行重定向

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);
  }
}