我正在尝试玩 Angular2,当我将基本代码升级到 Angular 2.0.0-RC5 时,我发现引入了一个重大更改,@NgModule,它相当于角度模块()在 Angularjs 1.x 中?
对我来说,@ngModule 让事情变得复杂。
当我使用 Angular 1.x 时,社区中有一些关于 angular.module 的抱怨,因为存在一些 javascript 模块系统。
默认情况下,Angular-cli生成的代码是基于SystemJS的,我们可以使用Typescript来组织源代码的结构。
为什么我们需要@NgModule,它是应用程序组织在运行时的逻辑视图?
我假设 @NgModule 被指定用于 Angular2 基于模块的架构,并且 @ngModule 可以在不同的应用程序中重用。与我过去几年使用过的其他基于模块/捆绑/插件的框架进行比较。它缺乏一些功能。
- @NgModule 提供导入/导出功能,但是如何在没有 Typescript 的情况下导入模块import子句,并拒绝其他@NgModule导入@NgModule私有组件/管道/服务。
- @NgModule 没有路由前缀,想象一下 @NgModule 由 3party 团队维护。例如。普通的Comment任何基于帖子的应用程序的模块,如何避免路由冲突,如何覆盖路由定义,如何在主机@NgModule中配置@ngModule?
-
为什么路由配置是由 RouteModule.forRoot()(或 forChild) 注册的,而不是由route@NgModule 注释的属性如下所示。
@NgModule(route:{prefix:'/comment', config: commentRouteConfigs})
export class CommentModule{}
目前,@NgModule API 耦合了路由配置。
当我在主机模块中导入模块时,如何覆盖 @NgModule 中定义的组件模板。
- 如何挂钩 @ngModule 生命周期(mout/unmout 或 load/unload 等,我在 Angular 文档中找不到 desc),以及如何在 @ngModule 内部没有服务的情况下在组件/管道/服务之间共享数据状态?
- 如果可能的话,将此@NgModule设计为可选功能,或者如果我们没有显式声明@ngModule,则默认情况下为应用程序使用隐式@ngModule。
Thanks.
据我所知NgModule
引入主要是为了正确支持路由器延迟加载路由和组件。
NgModule
s 的导入和导出与 TS 的导入和导出无关。它主要是关于依赖注入和编译模板。
不知道
不明白这个问题
Angular2 根本不支持覆盖模板。有一些构建工具允许这样做,但 Angular2 本身不提供任何东西来做到这一点。
我已经看到讨论中提到的模块生命周期回调,但还找不到任何具体内容(例如https://github.com/angular/angular/issues/10808#issuecomment-239823985 https://github.com/angular/angular/issues/10808#issuecomment-239823985)
我想这是可能的,但我不知道 Angular2 团队是否考虑过这一点。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)