模块和延迟加载角度

时间:2018-12-03 21:40:16

标签: angular ionic3

我正在使用Ionic,我有一个名为Login的IonicPage及其各自的文件(login.html, login.module.ts, login.scss, login.ts)

login.module.ts文件中,我在数组提供程序中定义了一些ProviderService文件,这些文件仅在Login中使用,因此我没有将它们添加到app.module.ts中这对我来说很好

@NgModule({
  declarations: [
    LoginPage
  ],
  imports: [
    HttpModule,
    IonicPageModule.forChild(LoginPage)
  ],
  entryComponents: [
    LoginPage
  ],
  providers: [
    settingsProvider,
    accessProvider,
    accessService
  ]
})

另一方面,我有一个名为QuestionsModule的模块,它由另外3个模块组成,分别为Questions1ModuleQuestions2ModuleQuestions3Modules

我在主模块中的位置:

@NgModule({
  imports: [
    Questions1Module,
    Questions2Module,
    Questions3Modules,
  ],
  providers: [
    questionService,
    questionProvider
  ]
})
export class QuestionsModule {}

根据我的想法,当添加到提供程序数组中时,其他导入的模块可以使用我导入的ProvidersServices,但是例如,我必须在{{ 1}},再次在Questions1Module中添加数组Providers的声明

@NgModule

如果这是正确的方法,那么在不同的部分将其两次导入以使用提供程序有什么意义?我的另一个怀疑是,在我的@NgModule({ declarations: [ Questions1Page, ], imports: [ IonicPageModule.forChild(Questions1Page), ], entryComponents: [ Questions1Page ], providers: [ questionService, questionProvider ] }) 导入数组中已经声明:

app.module.ts

如果看到的话,我没有必要添加imports: [ BrowserModule, LoginModule, IonicModule.forRoot(MyApp, { mode: 'ios', backButtonText: '' }), HttpClientModule, ], ,但是如果使用LoginModule,如果两者都是由IonicPageModule生成的,为什么会有这种差异?

1 个答案:

答案 0 :(得分:0)

更好的方法是创建一个名为shared.module.ts的文件,然后在其中定义questionServicequestionProvider或任何其他组件,服务...,您将在其中多次使用2个不同的模块,

shared.module.ts

@NgModule({
   declarations: [],
   imports: [],
   entryComponents: [],
   providers: [
      QuestionService,
      QuestionProvider
   ]
});

要在其中使用shared.module.ts中的内容的模块

@NgModule({
   declarations: [
      Questions1Page
   ],
   imports: [
      IonicPageModule.forChild(Questions1Page),
      SharedModule // this module will import the QuestionService and other..
   ],
   entryComponents: [
      Questions1Page
   ],
   providers: []
});