从RC4到发布的应用重构(Component和NgModule)

时间:2016-09-20 14:45:43

标签: angular angular2-directives

有关与@Component和@NgModule相关的更改的问题。

总结一下,如果我错了,请纠正我,重点是Component的指令现在是NgModule的声明。

好的,我明白了,做模块。但我不确定如何重构我的应用程序..

该应用最初是这样的:

  • 主要应用程序(使用AppComponent)
  • 功能区1
    • 子功能区域11
      • 列表视图(组件)
      • 详情视图(组件)
    • 子功能区12
      • 列表视图(组件)
      • 详情视图(组件)
  • ...约4个区域,每个3个子区域
  • 技术组件目录
    • 技术/ UI组件1(组件)
    • 技术/ UI组件2(组件)
    • ...约6

具体来说,我认为我有两个选择:

  • 为我的每个组件(列表/详细信息视图)创建一个NgModule,但技术组件除外。
  • 或者创建一个声明所有依赖项的主要NgModule

第一个是添加大量的行只是为了在大多数情况下声明带有on组件的模块,似乎是错误的。 第二种情况似乎是糟糕的设计,让所有代表在同一​​个地方..

关于我应该做什么的任何建议?我不确定模块的愿景是否适合我的应用..

2 个答案:

答案 0 :(得分:2)

angular2文档推荐feature modules。来自网站:

  

功能模块提供一组紧密结合的功能,专注于应用程序业务领域,用户工作流程,工具(表单,http,路由)或相关实用程序的集合。

将这个想法应用到您的应用程序中,我会将相关的“技术UI组件”和“功能区域”放在一起,而不是将它们分开。然后,您将为他们的意图创建多个模块,而不是他们的技术构成。您仍然需要一个将导入功能模块的根模块。

单独模块的目标是,如果您愿意,可以按原样取出并直接插入另一个应用程序。

示例布局:

- app.module.ts
- app.component.ts
- feature1/
--- feature1.module.ts
--- feature1.component.ts
--- feature1.service.ts
- feature2/
--- feature2.module.ts
--- feature2.directive.ts
--- feature2.component.ts
--- feature2-subcomp/
------ feature2-subcomp.component.ts
------ feature2-subcomp.component.html

当然,每个功能模块可以包含您想要满足每个功能区域要求的组件/服务/指令。

答案 1 :(得分:1)

您不必为每个组件创建NgModule。 为什么不为每个功能区域创建NgModule? 也许对于每个子功能区域?

您只需要将这些第一级功能区NgModule导入AppModule。

并且不要介意那些NgModule内的所有组件。

关于NgModule的问题。在你的AppModule中你不想要处理所有子组件和子子子子组件子组件。 。:)