是否可以在一个 ngModule 'X' 中声明一个提供程序,并在另一个导入 'X' 的 ngModule 'Y' 中使其可用?



基本上标题所说的:提供者/注射剂可以在共享模块中声明并提供给其他人吗?

@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.tsproviders数组中声明它,如下所示。既然他们不是modules,就providers。之后,您可以在需要时将其注射到page上。

@NgModule({
declarations: [
MyApp,
],
imports: [
BrowserModule,
HttpModule,
IonicModule.forRoot(MyApp, { backButtonText: '' }),
],
bootstrap: [IonicApp],
entryComponents: [
MyApp
],
providers: [
MyProvider,//here
]
})
export class AppModule {
}

最新更新