Ionic中的Page是2个模块的声明的一部分

时间:2019-12-03 13:36:58

标签: angular typescript ionic3

我有一个ionic 3项目,文件app.module.ts类似于:

@NgModule({
declarations: [
    MyApp,
    HomePage,
    AdminPage,
    ActuDetailPage,
],...

当我在Android设备上以dev身份进行部署时,没问题,但是当我使用--prod --release参数进行部署时,出现以下错误消息:

Type ActuDetailPage in /Users/poste5hookipa/sites/frApp4/src/pages/actu-detail/actu-detail.ts is part of the 
        declarations of 2 modules: AppModule in /Users/poste5hookipa/sites/frApp4/src/app/app.module.ts and 
        ActuDetailPageModule in /Users/poste5hookipa/sites/frApp4/src/pages/actu-detail/actu-detail.module.ts! 
        Please consider moving ActuDetailPage in 
        /Users/poste5hookipa/sites/frApp4/src/pages/actu-detail/actu-detail.ts to a higher module that imports 
        AppModule in /Users/poste5hookipa/sites/frApp4/src/app/app.module.ts and ActuDetailPageModule in 
        /Users/poste5hookipa/sites/frApp4/src/pages/actu-detail/actu-detail.module.ts. You can also create a new 
        NgModule that exports and includes ActuDetailPage in 
        /Users/poste5hookipa/sites/frApp4/src/pages/actu-detail/actu-detail.ts then import that NgModule in 
        AppModule in /Users/poste5hookipa/sites/frApp4/src/app/app.module.ts and ActuDetailPageModule in 
        /Users/poste5hookipa/sites/frApp4/src/pages/actu-detail/actu-detail.module.ts. 

所以我必须取消评论:

@NgModule({
declarations: [
    MyApp,
    HomePage,
    /* AdminPage,
    ActuDetailPage,*/

对于后者,我可以按产品部署,但是使用相同的注释,在dev中进行部署会产生错误。 如何组织代码使其与开发人员和生产人员兼容?谢谢

2 个答案:

答案 0 :(得分:0)

您可以创建一个共享模块,在其中声明Page组件,并将其添加到导出数组中

然后在您提到的2个模块中导入共享模块。

赞:

SharedModule:

@NgModule({
  imports: [
    ...
  ],
  declarations: [
    AdminPage,
    ActuDetailPage
  ],
 exports: [
    AdminPage,
    ActuDetailPage
 ]
})
export class SharedModule { }

模块1和模块2:

 @NgModule({
      imports: [
        SharedModule, 
        ...
      ]

答案 1 :(得分:0)

我终于摆脱了这个问题,消息只说模块不属于任何模块,然后将actu-detail.ts放在模块文件中。实际上在actuDetailPageModule中声明了actu-detail.ts,但在AppModule中未导入ActuDetailPageModule。

在app.module.ts的@NgModule中,imports属性是一个模块数组,我只是添加了AdminPageModule,ActuDetailPageModule来解决此问题。

@NgModule({
declarations: [
MyApp,
HomePage,
],
imports: [
AdminPageModule,
ActuDetailPageModule,
....],