Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 是否可以在一个ngModule';X';并在另一个ngModule';Y';进口';X';?_Angular_Ionic Framework_Ionic2 - Fatal编程技术网

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?