当前位置:  开发笔记 > 后端 > 正文

Angular 2 - 子模块路由和嵌套<router-outlet>

如何解决《Angular2-子模块路由和嵌套<router-outlet>》经验,为你挑选了2个好方法。

我正在寻找一个Angular 2的解决方案,用于下面解释的场景:

在此输入图像描述

在这种情况下,top-nav包含加载子模块的链接,sub-nav有链接来更新子模块的内容.

网址应映射为:

/ home =>在主组件路由器插座中加载主页

/ submodule =>加载主组件路由器插座中的子模块,默认情况下应显示子模块的主页和子导航栏

/ submodule/feature =>加载子模块路由器插座内的功能

应用程序模块(和应用程序组件)包含一个导航到不同子模块的顶部导航栏,应用程序组件模板可能如下所示



但这是复杂性.我需要我的子模块与第二级导航栏和他们自己的路由器插座具有相似的布局,以加载他们自己的组件.



我尝试了所有选项并在任何地方搜索但是找不到具有路由器插座的子模块中的默认模板(如app组件)的解决方案,并且还在内部路由器插座中加载子模块的内容而不会丢失子导航.

我会很感激任何意见或想法



1> Aswin KV..:

html页面看起来像这样.

主页



子模块页面



点击顶部导航栏中的导航,主要路径出口将分别路由.

点击子导航栏时,router-outlet [sub]将分别路由.

HTML很好,诀窍就在于编写app.routing

app.routing.ts

const appRoutes: Routes = [
  {
    path: 'login',
    component: LoginComponent
  },
  { path: 'home',
    component: homeComponent,
    children: [
      {
        path: 'module1',
        component: module1Component,
        children: [
          {
            path: 'submodule11',
            component: submodule11Component,
          },
          {
            path: '',
            redirectTo: 'submodule11',
            pathMatch: 'full'
          }
        ]
      },
      {
        path: 'module2',
        component: module2omponent,
        children: [
          {
            path: 'submodule21',
            component: submodule21Component,
          },
          {
            path: '',
            redirectTo: 'submodule21',
            pathMatch: 'full'
          }
        ]
      }
    ]
  },
  {
    path: 'about',
    component: aboutComponent
  }
]

希望它会对你有所帮助.

更多细节https://angular.io/guide/router


路由器链接必须是一个字符串,如果你在字符串的开头添加'/'它将替换当前路由如果你不添加'/'路由链接将添加当前路由.你还不清楚请在一些在线编码平台上创建一个示例应用程序并分享链接

2> 小智..:

使用:

RouterModule.forChild()
...

...
[routerLink]="[{ outlets: { sub: [subRouteName] } }]"

完整示例:

HTML

app.module.ts

imports: [
...
    RouterModule.forChild([
      {
        path: 'registers',
        component: RegistersComponent,
        children: [
          {path: 'vehicles', component: VehiclesComponent, outlet: 'sub'},
          {path: 'drivers', component: DriversComponent, outlet: 'sub'},
          {path: 'bases', component: BasesComponent, outlet: 'sub'},
          {path: 'lines', component: LinesComponent, outlet: 'sub'},
          {path: 'users', component: UsersComponent, outlet: 'sub'},
          {path: 'config', component: ConfigComponent, outlet: 'sub'},
          {path: 'companies', component: CompaniesComponent, outlet: 'sub'}
        ],
        canActivate: [AuthGuard]
      }
    ]),
...

推荐阅读
mylvfamily
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有