Как я могу использовать параметр получить из URL с маршрутизатором в Angular 7 - PullRequest
0 голосов
/ 08 декабря 2018

Я действительно смущен маршрутизатором Angular 7.Я хочу использовать параметр get "token" из любого места в URL.

Я использую следующий код для определения нескольких маршрутов.

const myRoutes: Routes = [
{ path: 'register/:token', component: RegisterComponent },
// { path: 'register?token=:token', component: RegisterComponent },
// { path: 'register:token', component: RegisterComponent },
{ path: 'register', component: RegisterComponent },
// ...
]

С первым определенным путем я могуиспользовать «register / mytoken » и «register /? token = mytoken » для получения токена.

// Token from register/123
this.token = this.route.snapshot.paramMap.get('token')
// Token from register/?token=123
this.route.queryParams.subscribe(params => {
  if (params.token != null)
    this.token = params.token;
});

Каждый раз, когда я пытаюсь предоставить свой токеннепосредственно как get-параметр при вызове веб-сайта в моем браузере («register? token = mytoken »), маршрутизатор перенаправит меня на «/ register», и я не могу получить токен с моим кодом выше,Но когда я использую «register /? Token = mytoken », я буду перенаправлен на «register? Token = mytoken » и могу использовать токен.

Как можноя предоставляю маршрут для доступа к странице с помощью «register? token = 123» и извлекаю токен?

1 Ответ

0 голосов
/ 09 декабря 2018

Благодаря @ Gilsdav , я должен был проверить это в «чистом» проекте самостоятельно.Я нашел некоторый блок кода от моего коллеги, который мешает параметру get маршрутизатора:

var loc = window.location.pathname;    
if ((loc == "/register") || (loc == "/"))  {
  this.router.navigate(['/landing']);
}

Этот редирект удаляет параметры получения.Я мог проверить перенаправление по его коду, добавив {enableTracing: true} .

imports: [
    RouterModule.forRoot(
      routes,
      { enableTracing: true } // <-- debugging purposes only
    )
]
...