как перенаправить с параметрами запроса из файла роутера - PullRequest
0 голосов
/ 27 мая 2020

У меня есть маршрутизатор, который принимает queryParams, он может включать или не включать queryParam для языка, например:? 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, если они существуют.

например URL-адреса, которые не работают:

http://mypage.com?lang=de http://mypage.com/invalidRoute?lang=de

Как я могу включить queryParms в это «redirectTo» ??

1 Ответ

0 голосов
/ 27 мая 2020

Решил, если кому интересно:

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