Angular 角度2(RC6)-启动组件中的布线不';工作

Angular 角度2(RC6)-启动组件中的布线不';工作,angular,angular-routing,angular-rc5,Angular,Angular Routing,Angular Rc5,在我的实际应用程序中,我想检查启动组件(通常是app.component.ts)中的用户是否经过身份验证。如果没有,我想将它们路由到登录组件。但是路由在这里不起作用 我创建了一个简单的Plunker示例,其中它是可复制的: 打开 单击按钮“导航到示例1”-->一切正常 但是您可以看到,我在app/app.component.ts中已经有了相同的路由命令,但是应用程序没有路由到组件。为什么 谢谢你的帮助 如果用setTimeout()将其包装起来,则工作正常 setTimeout(() =>

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

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

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

  • 谢谢你的帮助

    如果用
    setTimeout()
    将其包装起来,则工作正常

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

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

    我确信有更好的方法来达到同样的效果,而不是
    setTimout()
    ,但我认为可以演示这个问题

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

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

    你也可以使用
    canActivate
    guard作为默认路由,并在那里执行
    router.navigate()

    你太快了,我正要写同样的东西:)很好,抱歉;-)我已经发布了超过5000个答案。实践造就大师。只要不要放弃。@GünterZöchbauer:谢谢你的回答和不懈的支持!你帮了我好几次!