对 Angular 2 中提供的 @NgModule 感到困惑

2024-04-27

我正在尝试玩 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 可以在不同的应用程序中重用。与我过去几年使用过的其他基于模块/捆绑/插件的框架进行比较。它缺乏一些功能。

  1. @NgModule 提供导入/导出功能,但是如何在没有 Typescript 的情况下导入模块import子句,并拒绝其他@NgModule导入@NgModule私有组件/管道/服务。
  2. @NgModule 没有路由前缀,想象一下 @NgModule 由 3party 团队维护。例如。普通的Comment任何基于帖子的应用程序的模块,如何避免路由冲突,如何覆盖路由定义,如何在主机@NgModule中配置@ngModule?
  3. 为什么路由配置是由 RouteModule.forRoot()(或 forChild) 注册的,而不是由route@NgModule 注释的属性如下所示。

    @NgModule(route:{prefix:'/comment', config: commentRouteConfigs}) export class CommentModule{}

    目前,@NgModule API 耦合了路由配置。

  4. 当我在主机模块中导入模块时,如何覆盖 @NgModule 中定义的组件模板。

  5. 如何挂钩 @ngModule 生命周期(mout/unmout 或 load/unload 等,我在 Angular 文档中找不到 desc),以及如何在 @ngModule 内部没有服务的情况下在组件/管道/服务之间共享数据状态?
  6. 如果可能的话,将此@NgModule设计为可选功能,或者如果我们没有显式声明@ngModule,则默认情况下为应用程序使用隐式@ngModule。

Thanks.


据我所知NgModule引入主要是为了正确支持路由器延迟加载路由和组件。

  1. NgModules 的导入和导出与 TS 的导入和导出无关。它主要是关于依赖注入和编译模板。

  2. 不知道

  3. 不明白这个问题

  4. Angular2 根本不支持覆盖模板。有一些构建工具允许这样做,但 Angular2 本身不提供任何东西来做到这一点。

  5. 我已经看到讨论中提到的模块生命周期回调,但还找不到任何具体内容(例如https://github.com/angular/angular/issues/10808#issuecomment-239823985 https://github.com/angular/angular/issues/10808#issuecomment-239823985)

  6. 我想这是可能的,但我不知道 Angular2 团队是否考虑过这一点。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

对 Angular 2 中提供的 @NgModule 感到困惑 的相关文章

随机推荐

  • 访谈:函数指针与 switch case

    在面试期间 我被要求为具有 100 个状态的系统实现一个状态机 其中每个状态又具有 100 个事件 我回答了以下 3 种方法 if else 开关盒 函数指针 if else 显然不适合这样的状态机 因此主要比较是 switch case
  • Visual Studio 2017命令行提示符

    我无法从 Windows 10 中的命令行提示符运行 cl Microsoft Visual Studio C 编译器 我使用的是新的 Windows 10 安装和新的 Microsoft Visual Studio 2017 社区版 我收
  • Python 的类表示魔法方法?

    我有一个自定义类 例如 class foo object def init self name self name name def get name self return self name 我想做的是写 test foo test p
  • 无法使用 CSS 设置文本区域宽度

    我尝试使用此 CSS 来设置表单元素的宽度 input type text textarea width 250px 如果您查看此 Firefox 屏幕截图 您会发现字段的宽度不同 我在 Safari 中也得到了类似的效果 替代文本 htt
  • 使用 C# 读取数百万个小文件

    我有数百万个每天生成的日志文件 我需要读取所有这些文件并将其放在一起作为单个文件 以便在其他应用程序中对其进行一些处理 我正在寻找最快的方法来做到这一点 目前我正在使用线程 任务和并行 如下所示 Parallel For 0 files L
  • Ruby 脚本即服务

    嗯 标题说明了一切 我有一个 ruby 脚本 我想在我的 Linux 机器上作为一项服务 我可以启动和停止 运行 我找到了如何在 Windows 上执行此操作here https stackoverflow com questions 16
  • Dialogflow 不记名令牌分析

    如何获取 Dialogflow v2beta1 API 调用的不记名令牌 我想集成 Dialogflow API 所以现在我什至无法在没有不记名令牌的情况下在邮递员中测试 API 为了进行测试 我在 GCP 项目中为我的代理生成了 API
  • 打开页面时出现问题(许可协议页面)

    我很困扰 如何在使用应用程序时仅显示一次协议页面 我不知道如何解释这一点 但我正在尝试解释这一点 我正在创建一个应用程序 其中有协议页面 其中有两个按钮 1 按钮名称为Accept 2 按钮名称为拒绝 如果用户单击接受按钮应用程序进入下一页
  • DDMS 显示在线模拟器的空文件资源管理器

    我很多天都面临这个问题 我搜索了很多但没有找到任何方便的答案 每当我启动模拟器时 一段时间后 当我看到 DDMS 时 它会显示模拟器在线 但其文件资源管理器什么也不显示 当我再次重新启动模拟器或重新启动 Eclipse 时 它 会再次可见
  • 有完整的 tomcat 角色列表吗?

    我希望能够完全访问和控制 tomcat 以使我的开发生活变得简单 我知道角色 admin 和 manager 并且知道还有一些带有连字符的角色 例如 manager gui 但在哪里可以找到包含可用角色描述的完整列表 我什至无法在文档中找到
  • 使用 Python 从 PDF 中的物理坐标返回文本字符串

    在过去的几个小时里 我一直在与 Google 和 PDFMiner 的有限文档作斗争 虽然我感觉很接近 但我只是没有得到我需要的东西 我已经经历过http www unixuser org euske python pdfminer htt
  • 简单的 XML 加载文件不起作用

    为什么这不起作用 url http query yahooapis com v1 public yql q select 20 20from 20html 20where 20xpath 3D 22 2F 2Fmeta 22 20and 2
  • Docker nuget连接超时

    尝试利用官方jetbrains teamcity agentKubernetes 上的图像 我已经设法在 Docker 中运行 Docker 但尝试使用以下命令构建 ASP NET Core 映像docker build命令失败于dotne
  • SetLocale 无法在 jsp 站点中以德语格式化货币

    我对 jstl 标签库感到困惑 我想将数字格式化为德国风格的货币 但我尝试的一切都不起作用 我找到了以下示例 但输出是相同的
  • 如何根据 angular.js 中的子复选框选择父复选框?

    我最近一直在使用 Angular js 并决定在选中父复选框后检查所有复选框 我已经使用了ng model and ng checked指令 div div div div
  • Hibernate 本机查询:无效的列名错误 SQL-17006

    package com abc def model import javax persistence Column import javax persistence Id import javax persistence Entity im
  • 在Angular JS中通过ajax调用发送数组

    我使用以下代码将一些信息发送到我的 servlet 来处理数据 http method GET url http localhost 8080 purchase AddInfo data addArray sample success fu
  • “for_each”值取决于无法确定的资源属性(Terraform)

    我有一个 terraform 配置 需要 创建一个 lambda 调用 lambda 迭代 lambda 的 json 结果 返回一个数组并为数组中的每个条目创建一个 CloudWatch 事件规则 相关代码如下 Create lambda
  • PHP GD库用于合并两个图像

    好的 我的文件中有两个图像 其中一件是T恤 另一个是徽标 我使用 CSS 设计了这两个图像的样式 使其看起来像徽标写在 T 恤上 我只是在 CSS 样式表中为徽标图像赋予了更高的 z index 无论如何 我是否可以使用 GD 库生成衬衫图
  • 对 Angular 2 中提供的 @NgModule 感到困惑

    我正在尝试玩 Angular2 当我将基本代码升级到 Angular 2 0 0 RC5 时 我发现引入了一个重大更改 NgModule 它相当于角度模块 在 Angularjs 1 x 中 对我来说 ngModule 让事情变得复杂 当我