【问题标题】:How do I get a grandchild to use the grandparent <router-outlet> in angular 6如何让孙子在角度 6 中使用祖父母 <router-outlet>
【发布时间】:2018-12-04 23:40:38
【问题描述】:

我有一个我在这次堆栈闪电战中寻找的示例: https://angular-czk5vj.stackblitz.io/

基本上我要做的是让孙子路由在祖父路由器插座中呈现。

即 路线: 雇员 ---> 企业报告 ------>报告详细信息

查看

当单击第一列中的姓名时,它会转到第二列中的员工报告。单击第二列的报表时,会在第三列显示报表的详细信息。

我觉得我需要在路由中完成此操作的原因是我希望能够通过 url (employees/11/reportdetail/2) 发送准确的报告,以便应用程序可以在该报告上打开。我愿意接受另一种方法来实现这一点。

【问题讨论】:

    标签: angular routing angular6 parent-child


    【解决方案1】:

    在您的实现中存在一些严重的命名约定问题。所以我决定创建自己的。它没有模块的延迟加载,但这是您已经知道并且可以实现的。

    回到您的要求,您可以将每个级别实现为上一级别的子路由。所以每个作为父组件的模板都会有一个router-outlet标签。

    所以你的routes 配置看起来像这样:

    const routes: Routes = [
      { path: 'employees', component: EmployeesComponent, children: [
        { path: ':id', component: ReportsComponent, children: [
          { path: 'detail/:repId', component: DetailsComponent },
          { path: '**', component: PlaceholderComponent }
        ] },
        { path: '**', component: PlaceholderComponent }
      ] },
      { path: '**', redirectTo: '/employees', pathMatch: 'full' }
    ];
    

    请注意,这里还有一个PlaceholderComponent,如果需要从列表中选择一个项目,则会显示该PlaceholderComponent

    我使用 Bootstraps Grids 来管理内容在三列中的分布。这就是你所需要的。


    这里有一个Working Sample StackBlitz 供您参考。

    【讨论】:

    • 关于路由子概念sidd的非常详细的解释。保持良好的工作。
    • @SiddAjmera...非常感谢。是的,我的堆栈闪电战中的命名并不漂亮。这是一个快速而肮脏的设置,因此我可以运行一些模仿我遇到的问题的东西。无论如何,这正是我想要得到的。我之前尝试过儿童路线,但无法让它工作......我会看看你的代码并找出我哪里出错了......
    • 只是跟进,与我原来的不同的一个项目是放置路由器插座元素的位置。我把我的一切都放在一个视图中。很明显,孩子不知道“第三个”插座,也不会放置它。将出口移到孩子身上,然后使用引导 css 就可以了。
    • @SureshKumarAriya 我知道这个问题已经很老了,但我面临着类似的问题。唯一的区别是我需要在根组件模板内的同一个router-outlet 中显示每个子、孙、孙(等等)组件。有可能这样做吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-29
    • 2018-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多