基本上标题所说的:提供者/注射剂可以在共享模块中声明并提供给其他人吗?
@ngModule({
providers:[MyProvider],
exports: [
OneComponentModule,
AnotherComponentModule
]
})
export class SharedModule{ }
@ngModule({
declarations: [HeroPage],
imports: [SharedModule]
})
export class HeroPageModule{ }
export class HeroPage {
constructor(mp: MyProvider){ }
}
我有上面的设置,其中共享模块是许多PageModules的导入,似乎必须有一种方法不必将我的提供程序包含在每个页面的ngModule中。
目前,MyProvider 在我的 HeroPage 中未被识别为注射剂。有谁知道一种方法可以做到这一点?
编辑:这是一个包含我的应用程序组件的播放器。
https://plnkr.co/edit/ttPW1r7wm0PcGsPOUusq
-JsonProvider 在 SharedModule 的 providers[] 中声明
-共享模块然后导入到英雄页面模块
-JsonProvider 被注入到 HeroPage 中,但找不到
AppModule 引导 IonicApp,所以我不能在引导程序中包含 JsonProvider 以使其全局可用。
您可以在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 {
}