Можно ли перенаправить только параметры запроса маршрута, который не найден? - PullRequest
1 голос
/ 14 июня 2019

Приложение получит перенаправление от провайдера аутентификации, но без хеша в URL.

Мне нужно перенаправить параметры из http://host/?param1=123 до http://host/#/login?param1=123

Как настроить для этого маршруты?

{ path: '', redirectTo: '/login', pathMatch: 'full'},
{ path: 'login', component: LoginComponent },

Ответы [ 2 ]

0 голосов
/ 14 июня 2019

Это невозможно с текущей конфигурацией углового маршрута redirectTo функциональность.

Что вы можете сделать, это написать [CanActivate] охранник, поместить его на этот пустой маршрут '', и внутри Guard перенаправить пользователя на /login, сохраняя параметры запроса, используя Router или возвращая UrlTree от охранника .

Например, внутри охранника это может выглядеть (используя Router):

  ...
  this.router.navigate(['login'], { preserveQueryParams: true });
  ...

Надеюсь, это поможет.

0 голосов
/ 14 июня 2019

Должно ли это быть сделано в путях маршрута?

Программно Я получаю параметры для справки следующим образом:

this.parameters = Object.assign({}, this.route.snapshot.parent.queryParams);

Теперь вы можете перенаправить с помощью this.parameters или создать их в navigate queryParams аргумент

this.router.navigate(['/profile/3'], { queryParams: { position: pos, 'salary': 'expensive' } }); // add .then(() => {}) for promise

для перенаправления

this.router.navigate(['login'], { preserveQueryParams: true });

Шаблон HTML-маршрутизации

<a [routerLink]="['/profile/3']" [queryParams]="{position:'boss', 'salary': 'expensive' }">

Если вам нужно больше, дайте мне знать, и я вам помогу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...