我正在使用Ionic,我有一个名为Login的IonicPage及其各自的文件(login.html, login.module.ts, login.scss, login.ts)
在login.module.ts
文件中,我在数组提供程序中定义了一些Provider
和Service
文件,这些文件仅在Login中使用,因此我没有将它们添加到app.module.ts
中这对我来说很好
@NgModule({
declarations: [
LoginPage
],
imports: [
HttpModule,
IonicPageModule.forChild(LoginPage)
],
entryComponents: [
LoginPage
],
providers: [
settingsProvider,
accessProvider,
accessService
]
})
另一方面,我有一个名为QuestionsModule
的模块,它由另外3个模块组成,分别为Questions1Module
,Questions2Module
和Questions3Modules
我在主模块中的位置:
@NgModule({
imports: [
Questions1Module,
Questions2Module,
Questions3Modules,
],
providers: [
questionService,
questionProvider
]
})
export class QuestionsModule {}
根据我的想法,当添加到提供程序数组中时,其他导入的模块可以使用我导入的Providers
和Services
,但是例如,我必须在{{ 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生成的,为什么会有这种差异?
答案 0 :(得分:0)
更好的方法是创建一个名为shared.module.ts
的文件,然后在其中定义questionService
和questionProvider
或任何其他组件,服务...,您将在其中多次使用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: []
});