基本上标题是什么:可以在共享模块中声明提供者/注射剂并将其提供给其他人吗?
@ngModule({
providers:[MyProvider],
exports: [
OneComponentModule,
AnotherComponentModule
]
})
export class SharedModule{ }
@ngModule({
declarations: [HeroPage],
imports: [SharedModule]
})
export class HeroPageModule{ }
export class HeroPage {
constructor(mp: MyProvider){ }
}
我有上面的设置,其中SharedModule是许多PageModule的导入,似乎必须有一种方法可以不必将我的提供者包含在每个页面的ngModule中。
目前,MyProvider在我的HeroPage中未被识别为注射剂。有谁知道这样做的方法?
编辑:这是一个有关我的应用程序组件的plunker。https://plnkr.co/edit/ttPW1r7wm0PcGsPOUusq
-JsonProvider在providers []
的SharedModule中声明-SharedModule然后导入到HeroPageModule
-JsonProvider被注入HeroPage,但无法找到
AppModule引导IonicApp,所以我不能在引导程序中包含JsonProvider以使其全局可用。
答案 0 :(得分:1)
你可以在app.module.ts
providers
数组中声明它,如下所示。由于它们不是modules
,只是providers
。之后,你可以注入它在您需要时page
。
@NgModule({
declarations: [
MyApp,
],
imports: [
BrowserModule,
HttpModule,
IonicModule.forRoot(MyApp, { backButtonText: '' }),
],
bootstrap: [IonicApp],
entryComponents: [
MyApp
],
providers: [
MyProvider,//here
]
})
export class AppModule {
}