Angular2 RC5强制一个将组件导入移动到NgModule声明 – 为什么?
您以前在您的组件中已经在@Component()的指令,管道和提供程序中声明的任何import语句现在都必须被移动到@ngModule声明.
为什么是这样? 我明白,要减少组件中的样板,但这对于在应用程序中多次重复使用的声明是有意义的. 对于只用于一个单一组件的指令,组件,管道或提供程序,似乎非常不必要,并且会导致@ngModules文件的沉重的膨胀. 在下面的链接中,在最后一步5中,它指出:
资料来源:RC4 to RC5 migration 解决方法
更新2
当我和NgModule自己做更多的工作时,我发现真正的答案是文档叫做Feature Modules. 这是一个想法,对于具有声明等的应用程序的子区域,您应该将每个区域都放入子模块AKA功能模块. 因此,只有在它们中使用的指令,而不是应用程序范围广泛的组件将不会变成组件模块,模块就是关于声明和提供程序的组件,组件正在进行正常的组件工作. 我不知道我是否喜欢这个装饰,但我绝对喜欢这样的供应商.现在,如果您遇到这些问题,调试服务生命周期问题,很容易知道在哪里寻找服务提供商. 还有一件事我还不能确定是否喜欢,功能模块不会从父模块继承模块导入.这意味着您必须在每个功能模块中导入BrowserModule,HttpModule和FormsModule.我明白为什么(要自给自足),但我讨厌冗长. 也就是说,您可以将所有常见导入包装到共享模块中,现在您只需要导入到功能模块中.这是ng2-translate建议的使用模式,例如,在“如果有多个NgModules”之后查看here. 更新1 回答这个问题的设计文档的特定部分是标题为“弃用”的部分(和其中的内容为什么在里面),这是一个direct link to that section. 原始答案 这个想法是,AoT(Ahead of Time)编译器可以一次使用一个模块并编译其所有的依赖项.同样的,在同一个模块中,您不必在组件环境中重新定义它们. 此外,路由器然后可以使用模块作为延迟加载的边界,因为它可以延迟加载模块,知道模块声明包含其所有依赖关系. 如果你阅读announcement和design document,你会得到更好的想法. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- webservice的安全机制3---Filter
- “docker -build”的输出在哪里?
- shell脚本-简单的添加用户
- RMI、Hessian、Burlap、Httpinvoker、WebService
- angularjs – 使用Yo生成的Angular项目中的跳过测
- 《Angular5之too many symbolic links encounter
- angular – 如何双向绑定我自己的RxJS主题为[(ng
- angularJS+requireJS实现controller及directive的
- bash – 这里做了什么[“${ – #* i}”!=“$ –
- Bootstrap 3.0不能与Apache 2.4一起使用吗?