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

Angular 2 (RC6) - Routing in the startup component doesn'n work

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

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

  1. 打开live example
  2. 单击按钮 "navigate to sample 1" --> 一切正常
  3. 但是您可以看到,我在 app/app.component.ts 中已经有相同的路由命令 - 但应用程序不会路由到组件。为什么??

感谢您的帮助!

如果你用 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()