Angular4路由器,Lazy加载模块子路由,命名为路由器出口

时间:2017-07-03 19:35:01

标签: angular angular2-routing

我有一个奇怪的问题。我需要在我的延迟加载模块的根路由元素上设置辅助路由器出口,这些模块在应用程序路由模块中设置了URL基础。解释似乎有点困难,但我将尝试解释这一点。

我的应用路由有此

{
     path: 'shop',
     loadChildren: 'app/shop/shop.module#ShopModule',
     canActivate: [AuthGuardService]
},

这意味着所有商店路线都应以

开头

/店

现在在商店模块中,我需要将主要内容显示在名为“ShopContent”的辅助路由器插座中。为此我设置了2条测试路线,其中一条适用于我。

车间工具路线如下。

const routes: Routes = [
    {
        path: '',
        component: ShopComponent,
        children: [
            {
                path: 'overview',
                component: ShopMarketingComponent,
                outlet: 'ShopContent'
            },
            {
                path: 'products',
                component: ShopMarketingComponent,
                outlet: 'ShopContent'
            }
        ]
    },
    {
        path: 'test',
        component: ShopComponent,
        children: [
            {
                path: 'overview',
                component: ShopMarketingComponent,
                outlet: 'ShopContent'
            },
            {
                path: 'products',
                component: ShopMarketingComponent,
                outlet: 'ShopContent'
            }
        ]
    }
];

如你所见,空的''路线和'测试'路线都有相同的孩子。我也有路由器插座设置。

<router-outlet name="ShopContent"></router-outlet>

什么似乎是我的军官问题?

我需要让“/ shop / overview”路线在我的辅助插座中打开ShopMarketingComponent,但这个routerLink给我一个未定义的路线错误

[routerLink]="['/shop', {outlets: {ShopContent: ['overview']}}]"

然而,这个完全正常

[routerLink]="['/shop/test', {outlets: {ShopContent: ['overview']}}]"

我的问题是,为什么我必须在混合中添加一个额外的URL段('/ test'),以便我可以拥有辅助路由器插座?神的名字是什么,我在这里做错了?

1 个答案:

答案 0 :(得分:2)

是否所有延迟加载的路线都显示在辅助插座中?如果是这样,您可以尝试将插座添加到延迟加载的路由配置:

{
     path: 'management',
     loadChildren: 'app/management-tool/managementtool.module#ManagementToolModule',
     canActivate: [AuthGuardService],
     outlet: 'managementtoolcontent'
},