Angular 2 Routing始终重定向到根路径

Med*_*7at 5 angular2-routing angular

我正在使用Angular 2 rc4,我已经使用了这样的新路由

const routes: RouterConfig = [{
    path: '',
    component: PublicLayoutComponent,
    children: [
        { path: '', component: HomeComponent},
        { path: 'login', component: LoginComponent}
    ]
}]
Run Code Online (Sandbox Code Playgroud)

对于这段代码我无法访问路线/login我只想知道什么是错的它总是重定向到根,请帮助

小智 5

这是一个旧主题-但尚无答案。如果对任何人都有帮助-我将其添加到RouterModule.forRoot选项中,发现对我而言:

RouterModule.forRoot(appRoutes,
      { enableTracing: true } // <-- debugging purposes only
)
Run Code Online (Sandbox Code Playgroud)

Angular.io路由器文档

然后,我发现嵌套的组件引发了异常。修复后,我的路由工作正常。发生的事情是,路由正在工作,当达到该1个组件的负载时,路由刚刚爆炸,因此angular退出了页面负载,默认为基本URL。这可能是出于安全原因,以防您的组件故障影响页面安全性?

  • 这是很棒的信息。`enableTracing` 非常有用。你知道无论如何要让它动态吗?dev 时为 true,构建 prod 时为 false。谢谢! (2认同)
  • @Leonli使用环境文件?`RouterModule.forRoot(routes,{enableTracing:!environment.production})` (2认同)

Luc*_*ult 1

我认为问题可能是根路径(PublicLayoutComponent)和第一个子路径(HomeComponent)具有相同的路径。

即:当您导航到http://localhost:4200/时您希望看到哪个组件

尝试改成这个看看是否有效?

const routes: RouterConfig = [{
    path: '',
    component: PublicLayoutComponent,
    children: [
        { path: 'home', component: HomeComponent},
        { path: 'login', component: LoginComponent}
    ]
}]
Run Code Online (Sandbox Code Playgroud)