将延迟加载的模块中的组件导入另一个延迟加载的模块

时间:2016-09-22 20:14:24

标签: angular

我已经关注Angular2官方网页上的Tour of of Hero教程。但我通过引入模块延迟加载更进了一步。

我有以下功能模块:

  • 模块Dashboard

    • 仪表板组件
  • 模块Hero

    • hero-list组件
    • hero-detail组件
    • 英雄搜索组件
    • 英雄搜索服务
    • 英雄模特

英雄搜索组件是应在仪表板模块中使用的指令。

但是,根据关于A​​ngular2架构的this documentation,其他人不应导入路由模块 。这意味着,我不应该将Hero模块导入仪表板模块。如果我这样做,我的路线无论如何都不再有效。

英雄搜索组件还使用英雄服务英雄模型,因此它对Hero模块具有很强的依赖性,使其难以外化。

那我该如何在Dashboard组件中使用hero-search组件呢?

2 个答案:

答案 0 :(得分:2)

您可以制作第三个模块,我们称之为UtilityModule,从那里导出HeroSearch,然后将UtilityModule导入DashboardModuleHeroModule。这样,您就可以在两个模块中使用HeroSearch组件。

@NgModule({
  imports: [ ... ],
  declarations: [ ... ],
  exports: [ HeroSearch ]
})

export class UtilityModule { }

答案 1 :(得分:0)

据我所知,你不能这样做。懒惰路由模块就像是应用程序的独立部分。所以在那里声明的任何东西都应该只在该模块的范围内使用。想一想。当您加载仪表板时,您永远无法确定您的懒惰Hero模块是否已加载。那么你想如何使用一个可能尚未加载的模块呢?

也许我错了,但我也尝试设计一个比他们在文档中显示的更复杂的模块结构而没有成功。我真的认为这个模块系统是一个糟糕的急速设计的例子。祝它好运。