首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >了解@NgModule的用法

了解@NgModule的用法
EN

Stack Overflow用户
提问于 2016-09-27 06:19:46
回答 1查看 400关注 0票数 4

这个新的@NgModule垃圾把我难倒了。以前,我可以通过@Component元对象的directives: []属性清晰地指定@Component的指令依赖项。

代码语言:javascript
复制
@Component({ /* ... */ })
export class Cmp1 {}

@Component({ /* ... */ })
export class Cmp2 {}

@Component({
  /* ... */
  directives: [Cmp1]
})
export class Cmp3 {}

@Component({
  /* ... */
  directives: [Cmp2, Cmp3]
})
export class Cmp4 {}

现在,在“方便”的伪装下,我现在必须在单个数组中声明一个包含所有这四个组件的@NgModule,如下所示:

代码语言:javascript
复制
@NgModule({
  declarations: [Cmp1, Cmp2, Cmp3, Cmp4],
  exports: [Cmp4],
  imports: [Cmp1, Cmp2, Cmp3, Cmp4]
})
export class YetAnotherWrapperClass {}

这不是掩盖了我的组件的真实依赖关系图吗?如果我这样做了,我怎么知道它实际上是依赖于Cmp1的Cmp3?哦,当然,我可以在这里和那里省略一些导入语句,但似乎成本正在丢失每个组件的显式依赖关系。

我通读了迁移指南和angular模块指南,但我觉得我似乎从根本上不同意@NgModule的设计决定。我是不是遗漏了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-27 13:42:03

引入@NgModule()的目的是允许路由器的延迟加载,而不是引入声明组件依赖项的不同方法。这只是一个副作用。

这是真的,你不再得到组件或指令的清晰依赖图,但如果你将你的应用程序拆分到每个NgModule的一个功能,这更有意义,你就会得到一个清晰的功能依赖图。

导入仅适用于NgModule,不适用于组件或指令。因此,此行无效

导入: Cmp1、Cmp2、Cmp3、Cmp4

应该是这样的

导入: Feature1Module、Feature2Module

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39713306

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档