2016-08-30 4 views
0

У меня есть следующее выражение, если пользователь является гостем:Углового 2 RC5 router.navigate не работает

this.router.navigate(['/intro']); 

в моем app.component.ts ngOnInit() метод.

Мой app.component.html имеет <router-outlet></router-outlet>

но когда я достигаю мое приложение в качестве гостя, не отображается IntroComponent и URL остается пустым без /intro.

Что случилось?

моего app.routes.ts

const appRoutes: Routes = [ 
    { path: '', component: HomeComponent }, 
{path:'intro',component: IntroComponent}, 
{path:'login',component: LoginComponent}, 
{path:'register', component: RegisterComponent} 
]; 
+0

Какую версию углового вы используете? У вас настроены маршруты? Вы импортируете их должным образом (в зависимости от того, какая версия у вас есть)? Нам понадобится дополнительная информация, чтобы помочь вам –

+0

Пути настроены, RC.5. Я добавил мой app.routes.ts, HomeCOmpon загружен. Хотя я перемещаюсь с this.router в intro – TheUnreal

+0

Пожалуйста, вставьте минимальный пример в плункер. – mxii

ответ

0

Это происходит потому, что первоначальная навигация не завершена при вызове this.router.navigate(['/intro']) из ngOnInit.

Есть два способа решить эту проблему:

Решение # 1

В app.module.ts отключение начальной навигация

RouterModule.forRoot(appRoutes, { initialNavigation: false }) 

Ref: router.navigate failing silently on OnInit of component

Решение # 2

Если вы не хотите отключать начальную навигацию, используйте setTimeout, чтобы завершить первоначальную навигацию.

setTimeout(() => this.router.navigate(['/intro']), 1) 
1

Измените ваши маршруты, как это:

const appRoutes: Routes = [ 
{ path: '', redirectTo: HomeComponent, pathMatch: 'full'}, //(redirectTo or component) 
{path:'intro',component: IntroComponent}, 
{path:'login',component: LoginComponent}, 
{path:'register', component: RegisterComponent} 
]; 

pathMatch стратегия по умолчанию в маршрутах prefixpath: '' так с prefix означает практически everyroute. Таким образом, everyroute был перемещен на HomeComponent.

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