Angular 是否可以在一个ngModule';X';并在另一个ngModule';Y';进口';X';?
基本上就是标题所说的:提供者/可注入项可以在共享模块中声明并提供给其他人吗Angular 是否可以在一个ngModule';X';并在另一个ngModule';Y';进口';X';?,angular,ionic-framework,ionic2,Angular,Ionic Framework,Ionic2,基本上就是标题所说的:提供者/可注入项可以在共享模块中声明并提供给其他人吗 @ngModule({ providers:[MyProvider], exports: [ OneComponentModule, AnotherComponentModule ] }) export class SharedModule{ } @ngModule({ declarations: [HeroPage], imports: [SharedModule] }) e
@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中未被识别为可注入的。有人知道怎么做吗
编辑:这里有一个关于我的应用程序组件的插件
-JsonProvider在提供程序[]中的SharedModule中声明
-然后将SharedModule导入HeroPageModule
-JsonProvider已注入HeroPage,但找不到
AppModule引导IonicApp,因此我无法在引导中包含JsonProvider以使其全局可用。您可以在
app.module.ts
提供程序数组中声明它,如下所示。因为它们不是模块,所以只需提供程序。之后,您可以在需要时将其插入页面
@NgModule({
declarations: [
MyApp,
],
imports: [
BrowserModule,
HttpModule,
IonicModule.forRoot(MyApp, { backButtonText: '' }),
],
bootstrap: [IonicApp],
entryComponents: [
MyApp
],
providers: [
MyProvider,//here
]
})
export class AppModule {
}
默认情况下,我在AppModule中声明的组件/指令/提供程序在我的任何页面中都不可用。你知道为什么会发生这种情况吗?你也需要在页面的构造函数中注入这些提供者。然后它就可以使用了。像这样:constructor(private-myProvider:myProvider){}
我已经有了它,但它没有将myProvider识别为已知元素。编译时错误“找不到名称‘MyProvider’”。是否导入了该文件?你能显示它的完整代码吗?你能显示导入
文件的详细信息以及提供者的用法吗?你能用你的问题创建一个plunker吗?这是爱奥尼亚特有的问题吗?你使用惰性路由吗?@yurzui刚刚更新了它!我不认为这是离子特异性的,但我确实认为离子阻止了我制造组件global@Maximus不,我不知道你的东西坏了。为什么在HeroPage中提供JsonProvider?