Angular 4 / Ionic 3:共享模块具有循环依赖性

时间:2017-12-19 01:15:57

标签: angular ionic-framework ionic3

我有一个循环依赖问题,我看不出如何解决。我有一个名为ItemDetailPageModule的页面模块,可以像这样导入SharedModule

@NgModule({
  imports: [
    IonicPageModule.forChild(ItemDetailPageComponent),
    IonicImageViewerModule,
    SharedModule
  ],
  declarations: [
    ItemDetailPageComponent,
  ],
  entryComponents: [
    ItemDetailPageComponent,
  ],
  exports: [
    ItemDetailPageComponent
  ]
})
export class ItemDetailPageModule { }

我还有SharedModule导出名为ItemCardComponent的组件,该组件依赖于ItemDetailPageModule将页面组件(ItemDetailPageComponent)推送到导航堆栈:

@NgModule({
  imports: [
    IonicModule,
    AuthenticationModalModule,
    ItemDetailPageModule
  ],
  declarations: [
    ItemCardComponent,
    AddCardFormComponent
  ],
  exports: [
    ItemCardComponent,
    AddCardFormComponent
  ]
})
export class SharedModule { }

显然,这会产生循环依赖。我无法弄清楚如何构造代码以避免这种情况。关于如何重构代码以避免循环依赖的任何想法?

1 个答案:

答案 0 :(得分:0)

您应该使用延迟加载,并不要求您在需要调用的地方声明ItemDetailPageModule。 您只需要像这样导航到它:

this.navCtrl.push("ItemDetailPageModule");

请注意,push方法将Module的名称作为字符串。

这样,您可以将模块彼此分开。