Angular 2(RC6) - 启动组件中的路由不起作用

时间:2016-09-13 06:52:42

标签: angular angular-routing angular-rc5

在我的真实世界应用程序中,如果用户通过身份验证,我想检查启动组件(通常是app.component.ts)。如果没有,我想将它们路由到登录组件。但路由在这里不起作用。

我创建了一个简单的Plunker示例,它可以重现:

  1. 打开live example
  2. 点击按钮"导航到示例1" - >一切正常
  3. 但是你可以看到,app/app.component.ts中已有相同的路由命令 - 但是应用程序没有路由到组件。为什么??
  4. 感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

如果用setTimeout(() => { this.router.navigate(["/sample1", "2"]); }); 包裹它,它可以正常工作

router.navigate()

Plunker example

似乎默认路由是在您致电setTimout()后发生的,因此无法生效。

我确信有更好的方法可以实现相同而不是RouterModule.forRoot([ { path: "", redirectTo: '/sample1/2', pathMatch: 'full' } { path: "sample1/:param1", component: Sample1Component }, { path: "**", component: HomeComponent } ]) ,但我认为可以证明这个问题。

例如,这会导致相同的行为

canActivate

您也可以使用router.navigate()后卫作为默认路线并在那里执行R