具有嵌套模块和通配符的Angular 4路由

时间:2017-07-21 17:34:39

标签: angular angular-routing

我有一个Angular 4应用程序,路由非常简单,因为我正在动态创建路由;所以这些是我app.module.ts中的路线

const routes: Routes = [
  {
    path: '',
    pathMatch: 'full',
    redirectTo: 'home'
  },
  {
    path: 'home',
    component: HomeComponent
  },
  {
    path: '**',
    component: PageComponent,
    resolve: {
      content: PageResolve
    }
  }
];

@NgModule({
  declarations: [ ... ],
imports: [
    ...
    RouterModule.forRoot(routes),
    AuthModule
  ]

这很好用。 我现在在一个单独的模块中添加身份验证,所以我得到了一个auth.module.ts:

export const ROUTES: Routes = [
  {
    path: 'auth',
    children: [
      { path: '', pathMatch: 'full', redirectTo: 'login' },
      { path: 'login',  component: 'LoginComponent' },
      { path: 'register', componente: 'RegisterComponent' }
    ]
  }
];

@NgModule({
  imports: [CommonModule, RouterModule.forChild(ROUTES)]
})

现在问题(我认为)是当我访问localhost:4200/home时,应用程序运行正常,但如果我访问localhost:4200/auth而不是重定向到LoginComponent,则主模块中定义的通配符与url和它改为PageComponent。

我想我可以从app.module.ts中的auth.module.ts导入路由并像这样使用它们:

{
  path: 'auth',
  children: AUTH_ROUTES
}

但我不想这样做,我想将这些路由仅保留在auth.module中。

有没有办法确保只在最后检查通配符路由?

由于

0 个答案:

没有答案