2016-09-13 6 views
1

В моем приложении реального мира я хочу проверить компонент запуска (обычно app.component.ts), если пользователь аутентифицирован. Если нет, я хочу перенаправить их на компонент входа. Но маршрутизация здесь не работает.Угловой 2 (RC6) - Маршрутизация в компоненте запуска не работает

Я создаю простой пример Plunker, где способность восстановления:

  1. Открыть live example
  2. Нажмите на кнопку "перейти к образцу 1" -> все работает
  3. Но вы можете видеть, что У меня есть такая же команда маршрутизации уже в app/app.component.ts, но приложение не направляется к компоненту. Зачем??

Благодарим за помощь!

ответ

1

Если вы обернуть его setTimeout() это работает прекрасно

setTimeout(() => { 
    this.router.navigate(["/sample1", "2"]); 
}); 

Plunker example

кажется маршрутизация по умолчанию происходит после вызова router.navigate() и поэтому не вступает в силу.

Я уверен, что есть лучшие способы добиться того же, а не setTimout(), но я думаю, что это хорошо, чтобы продемонстрировать проблему.

Например, это привело бы в такое же поведение

RouterModule.forRoot([ 
    { path: "", redirectTo: '/sample1/2', pathMatch: 'full' } 
    { path: "sample1/:param1", component: Sample1Component }, 
    { path: "**", component: HomeComponent } 
]) 

Вы можете также использовать canActivate ограждение на маршрут по умолчанию и сделать router.navigate() там.

+1

Вы были слишком быстр Günter Я собирался написать то же самое :) Nice post –

+2

Извините ;-) Я отправил уже> 5000 ответов. Практика создает мастеров. Только не сдавайся. –

+1

@ GünterZöchbauer: Спасибо за ваш ответ и за вашу неустанную поддержку! Ты помог мне несколько раз! –

Смежные вопросы