Angular 4,从组件转换为模块

时间:2017-12-05 08:23:20

标签: angular module routing

我有一个组件 DfqComponent ,我想把它变成一个模块,但它应该保持其路由行为。这些是我想要保留的路径,在模块 ProductionLineRoutingModule 中定义,它有自己的插座:

const routes: Routes = [
  { path: 'line', component: ProductionLineListComponent },
  { path: 'line/:name', component: ProductionLineDetailsComponent,
  children: [
    { path: 'dfq', component: DfqComponent },
    // other modules planed
    { path: '', pathMatch: 'full', redirectTo: 'dfq' }
  ]
}];  

要将 DfqComponent 转换为 DfqModule 并像以前一样调用它,我在 DfqRoutingModule 中使用了以下路由:

const routes: Routes = [
  { path: 'line/:name/dfq', component: DfqComponent }
];

这向我展示了所需的html(实际上只是单词DFQ),但在我看来有两个缺点:
1.出口现在是 AppComponent 的主要出口 2.路线定义与 ProductionLineModule (' 行/:名称/ dfq '而不是&# 39;的 DFQ '。)

那我怎么能实现这个目标呢?

该项目实际上是这样的:

Project overview

2 个答案:

答案 0 :(得分:1)

我这样做的方法是通过loadChildren。在父路由

a

在dfq路由

[{
    path: 'line/:name',
    loadChildren: './dfq/Dfq.module#DfqModule'
}]

在导入中的DfqModule

 [{ 
      path: 'dfq', component: DfqComponent
 }]

答案 1 :(得分:0)

好的,多亏了 elasticrash ,它现在可以运行,代码文件看起来很清晰。

要删除 ProductionLineRoutingModule 中的children []数组,并使用loadChildren属性添加多个路径定义。 DfqModule和DfqRoutingModule已经没事了。

const routes: Routes = [
  { path: 'line', component: ProductionLineListComponent },
  { path: 'line/:name', component: ProductionLineDetailsComponent,
  loadChildren: '../masterdata/masterdata.module#MasterdataModule'
  },
  { path: 'line/:name', component: ProductionLineDetailsComponent,
  loadChildren: '../order/order.module#OrderModule'
  },
  { path: 'line/:name', component: ProductionLineDetailsComponent,
  loadChildren: '../dfq/dfq.module#DfqModule'
  }
];  

关于缺少的东西:我现在如何设置默认路线,例如' dfq'?

谢谢!