Angular 2路由正在加载到顶级路由器出口,尽管在路由上定义了指定的路由器出口

Angular 2路由正在加载到顶级路由器出口,尽管在路由上定义了指定的路由器出口,angular,angular2-routing,Angular,Angular2 Routing,在这里您可以看到问题: 管理区域模型应以名称模型内容呈现到路由器出口中,但它与父模块放在同一路由器出口中,即管理区域模型。这没有任何意义,因为我在管理区域模型中得到了这一点路由器: const routes: Routes = [ { path: '', component: ModelsComponent }, { path: 'brands', loadChildren: '../pages/+models-brands/models-brand

在这里您可以看到问题:

管理区域模型
应以名称
模型内容
呈现到路由器出口中,但它与父模块放在同一路由器出口中,即
管理区域模型
。这没有任何意义,因为我在
管理区域模型中得到了这一点
路由器:

const routes: Routes = [
  {
    path: '',
    component: ModelsComponent
  },
  {
    path: 'brands',
    loadChildren: '../pages/+models-brands/models-brands.module#ModelsBrandsModule',
    outlet: 'models-content'
  },
  {
    path: 'models',
    loadChildren: '../pages/+models-models/models-models.module#ModelsModelsModule',
    outlet: 'models-content'
  },
  {
    path: 'models/:id',
    loadChildren: '../pages/+model/model.module#ModelModule',
    outlet: 'models-content'
  }
];

@NgModule({
  imports: [
    ComponentsModule,
    SharedModule,
    RouterModule.forChild(routes)
  ],
  declarations: [
    ModelsComponent
  ]
})

export class ModelsRouterModule {}
为什么当我定义了一个特定的出口时,它仍然将其呈现为顶级出口

编辑:

如果我更改为将路线定义为子级,则改为如下定义:

const routes: Routes = [
  {
    path: '',
    component: ModelsComponent,
    children: [
      {
        path: 'brands',
        loadChildren: '../pages/+models-brands/models-brands.module#ModelsBrandsModule',
        outlet: 'models-content'
      },
      {
        path: 'models',
        loadChildren: '../pages/+models-models/models-models.module#ModelsModelsModule',
        outlet: 'models-content'
      },
      {
        path: 'models/:id',
        loadChildren: '../pages/+model/model.module#ModelModule',
        outlet: 'models-content'
      }
    ]

  }
];
那么所有的路线都不起作用了
ModelsComponent
位于
/admin/dashboard/models
,因此在第一次配置中,我显示了所有可访问的路由,如下所示:

/admin/dashboard/models
/admin/dashboard/models/(models-content:brands)
/admin/dashboard/models/(models-content:models)
/admin/dashboard/models/(models-content:models/5) // Any number

但是,当尝试使用
子项的配置时,我无法再访问任何这些路由。建议对延迟加载的文件使用此语法是错误的

因为您的
管理区域模型
不是您的
管理区域模型
的子对象,所以您的路线需要类似于:

const routes: Routes = [
  {
    path: '',
    component: ModelsComponent,
    children: [
      {
        path: 'brands',
        loadChildren: '../pages/+models-brands/models-brands.module#ModelsBrandsModule',
        outlet: 'models-content'
      },
      {
        path: 'models',
        loadChildren: '../pages/+models-models/models-models.module#ModelsModelsModule',
        outlet: 'models-content'
      },
      {
        path: 'models/:id',
        loadChildren: '../pages/+model/model.module#ModelModule',
        outlet: 'models-content'
      }
    ]

  }
];
您希望在
管理区域模型中呈现辅助路由,其中包含
,但这是您声明路由的方式:

下面是您要如何渲染它们:


您显然需要更改您的逻辑,因为您的路由不是同级的,它们是
管理区域模型的子对象,不再允许我访问
'
路由或任何低于此级别的路由。您能详细说明一下吗,拜托?那是因为现在你的路线是这样的:
/admin/dashboard/models/brands
/admin/dashboard/models/models
/admin/dashboard/models/models/5
,但它们是辅助路线,所以它们不是:|然后你需要重新考虑你的逻辑,因为您将它们声明为
模型的同级
,但随后希望它们是
模型的子级
,所以它们会与父组件一起渲染