是否可以在一个ngModule' X'中声明一个提供者?并将其提供给另一个ngModule' Y'导入' X'?

时间:2017-08-08 16:43:34

标签: angular ionic-framework ionic2

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

@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以使其全局可用。

1 个答案:

答案 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 {
}