【问题标题】:angular --Import sharedModule inside the coreModule without circular dependencyangular -- 将 sharedModule 导入 coreModule 内部,没有循环依赖
【发布时间】:2020-12-20 21:09:33
【问题描述】:

我需要访问 coreModule 中的 sharedModule=>random.component... 目前,我遇到循环依赖错误。我应该继续尝试这样做还是它本身就是错误的?

这是我当前的应用结构

app.module.ts

-> 导入:core.module.ts

core.module.ts

-> Imports:shared.module.ts(我认为这会导致循环依赖

shared.module.ts

  • 它是由任何功能模块需要的导入

  • app.module.ts 也导入它

  • core 正在导入它,因为它包含我的 log.service.ts

  • 可以从 shared

    预测 core 中还需要其他东西

shared.module.ts ===> log.service.ts

  • 这是共享的,因为它不应该是单例
  • 尝试删除 core 中的 share import 并简单地在 core 组件中导入 log.service 但现在 core 不会

如果 core 导入 shared 是错误的。 core 如何获得对 shared

中事物的访问权限

【问题讨论】:

  • 我在这里没有看到循环引用。它只是 App => Core => Shared。和应用程序 => 共享。这很好。您确定没有其他方式的进口,例如共享导入核心?
  • 功能和共享模块不导入核心,但共享组件确实使用来自核心的单例服务,例如import { GlobalService } from 'meteorite-core'; ... shared.module 中没有提到核心
  • 如果核心导入共享是错误的。核心如何访问共享中的内容 您可以将其导入到任何您想要的位置 - 除非共享模块没有导入该部分。你会得到循环依赖。
  • @Omar 这就是你的循环。由于 share 使用的是核心 - 首先不应该将其分开。
  • 我明白了。所以核心有 global.service (单例),几乎每个共享或功能模块都需要它。我如何做到这一点? @Antoniossss

标签: angular angular-module


【解决方案1】:

由于shared 模块导入main 模块但仅用于其中一个服务,因此将该服务设为单独的模块。这样做将允许您在任何地方导入该特定模块(服务)。

【讨论】:

    【解决方案2】:

    您不应该在 coreModule 中导入 sharedModule,这与整个目的相矛盾。 CoreModule 是您加载在整个应用程序中使用的组件/模块/prodivers 等的地方,并且只能在 appModule 中导入。 SharedModule 用于您的 featureModules。

    同时在您的应用程序中搜索 (Ctrl+F) CoreModule,也许您也在其他地方导入它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-04-15
      • 2018-07-22
      • 2019-01-10
      • 2023-03-04
      • 1970-01-01
      • 1970-01-01
      • 2010-12-06
      • 1970-01-01
      相关资源
      最近更新 更多