Angular:如何在不同模块的不同组件之间共享组件,反之亦然

时间:2020-07-04 15:21:43

标签: angular module angular-components angular-module

如何在不同模块中的不同组件之间共享组件?如何与共享组件共享不同模块中的组件。

我有四个模块。具有组件A的模块A,具有组件B的模块B,具有组件C的模块C和具有组件D的模块D。模块B,C和D各自导入模块A以便访问组件A。但是存在一个问题,组件A需要使用它的各个组件。例如,当组件A使用组件A时,它需要组件B。

是否有一种方法可以使模块B,C和D各自拥有组件A的副本?

1 个答案:

答案 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 { }

谢谢。