1

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

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

  1. 打开现场示例
  2. 单击按钮“导航到样本 1”-> 一切正常
  3. 但是您可以看到,我已经在app/app.component.ts- 但应用程序没有路由到组件中具有相同的路由命令。为什么??

谢谢你的帮助!

4

1 回答 1

1

如果你用它包装它setTimeout()工作正常

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

Plunker 示例

似乎默认路由发生在您调用之后router.navigate(),因此不会生效。

我确信有更好的方法来实现相同的目标,setTimout()但我认为证明这个问题很好。

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

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

您还可以canActivate对默认路由使用警卫并在router.navigate()那里执行。

于 2016-09-13T06:59:49.533 回答