繁体   English   中英

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

[英]Importing a Component from a lazy-loaded Module into another lazy-loaded Module

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

我有以下功能模块:

  • 模块Dashboard

    • 仪表板组件
  • 模块Hero

    • 英雄列表组件
    • 英雄细节组件
    • 英雄搜索组件
    • 英雄搜索服务
    • 英雄模特

hero-search组件是应该在Dashboard Module中使用的指令。

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

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

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

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

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

export class UtilityModule { }

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM