如何在不同模块中的不同组件之间共享组件?如何与共享组件共享不同模块中的组件。
我有四个模块。具有组件A的模块A,具有组件B的模块B,具有组件C的模块C和具有组件D的模块D。模块B,C和D各自导入模块A以便访问组件A。但是存在一个问题,组件A需要使用它的各个组件。例如,当组件A使用组件A时,它需要组件B。
是否有一种方法可以使模块B,C和D各自拥有组件A的副本?
答案 0 :(得分:3)
这是一个常见的要求。这里让我解释一下。
Angular允许在一个且仅一个模块中声明一个组件。而且,如果另一个模块中需要该组件,则必须将该模块导入需要该组件的模块的imports数组中。
现在,如果模块A中的组件A 和模块B中的组件B 两者都需要,并且您导入了模块A 在模块B 中,在模块A 中在模块B 中,那么您将陷入循环参考陷阱。
要解决此问题,您必须引入一个新模块,并在此新模块中声明所有此类组件,然后让该新模块导入需要组件的模块中。
假设我的这个新模块名称为 LoaderSharedModule ,看起来像这样
@NgModule({
imports: [
],
declarations: [Component1, Component2, Component3],
exports: [Component1, Component2, Component3]
})
export class LoaderSharedModule { }
模块将导入此模块以开始使用Component1,2,3 ..这样的
@NgModule({
imports: [
LoaderSharedModule
],
})
export class Module1 { }
@NgModule({
imports: [
LoaderSharedModule
],
})
export class Module2 { }
@NgModule({
imports: [
LoaderSharedModule
],
})
export class Module3 { }
谢谢。