的技术堆栈
该项目循环依赖是采用了棱角分明2和打字稿本地NPM服务器上运行,并使用角CLI建。共享集服务,避免在共享组件
建筑
该项目共有三个模块。第一个是非UI服务和组件。第二个是UI组件和布局。第三个也是最后一个模块用于UI服务。他们被分解为如下图所示:
正如你所看到的,我真的不知道我是否需要一个父模块这里与否,因此最上面的项目”父母MODULE?”
的问题
- 共享跨越多个模块
- 避免循环依赖的服务的单当两个模块需要相互起作用
问题1 - 横向中共享服务的Singleton多个模块
就我而言,我需要UI模块和非UI模块共享UI服务模块中的所有服务的单身人士。
我曾尝试
到目前为止,我已经使用forRoot()
无济于事,以及试图将服务本身转移到父模块,并从那里向他们提供尝试。不管我做什么,我似乎都无法让这两个模块从UI服务模块共享一个单例。
问题2 - 避免循环依赖当两个模块都需要互相
我面对我的应用程序的另一个问题是,我有一个模块的一部分,需要所有其它模块,这反过来需要的第一个模块的一部分为了工作。
在非UI模块中,您将看到页眉/页脚需要使用UI模块才能正常工作。但是,在UI模块中,布局需要访问页眉/页脚才能将这些项目提供为布局的一部分。这形成了一个循环依赖关系,我不能完全消除我的头。
我曾尝试
我想到了移动布局了UI模块到自己的模块,但是他们也需要在UI模块的组件部分的引用,所以如果只要我进口该模块我重新创建循环依赖。
解决方案
我需要一种方法来消除循环依赖,并以某种方式共享所有服务中的一个单所有其它模块之间的UI服务模块中。
我一直在努力寻找解决这两个问题的一个星期,现在我认为在这一点上我无法看到树木的森林。我确信我错过了一些愚蠢的东西,但我似乎无法解决这个问题。
这并不能真正解决我的问题,因为它需要将页眉/页脚移动到不同的模块,这在我的应用程序体系结构中是不可能的。碎片必须保留在原处。我可以修改的唯一东西是进口商和供应商。 – StephenRios