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

Angular: How to share a component between different components in different modules and vice versa

如何在不同模块中的不同组件之间共享一个组件,将不同模块中的组件与共享组件共享。

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

有没有办法让它在不让模块 B、C 和 D 各自拥有自己的组件 A 副本的情况下工作?

这是一个普遍的要求。这里稍微解释一下。

Angular 允许在 一个且仅一个模块 中声明一个组件。如果另一个模块需要该组件,则必须将该模块导入到需要该组件的模块的导入数组中。

现在,如果 组件 A 在模块 A 中,组件 B 在模块 B 中并且两者相互需要,那么您导入 模块A模块B中,模块B模块A[=49=中],那么你就陷入了循环引用陷阱。

要解决此问题,您必须引入一个新模块,并在此新模块中声明所有此类组件,并让这个新模块导入到需要组件的模块中。

假设我的这个新模块名称是 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 { }

谢谢。