作成しようとしていますグローバルシングルトン利用可能サービス。私はこの解決策 - https://angular.io/docs/ts/latest/guide/ngmodule.html#!#shared-moduleを読んだが、それは私のために働かない。角2 RC.5シングルトングローバル共有サービス
私は共有モジュール(これは私の短い例である)作成:
NgModule({
imports: [
CommonModule,
ReactiveFormsModule
],
declarations: [ ShopCartComponent ],
exports: [
CommonModule,
ReactiveFormsModule,
ShopCartComponent,
]
})
export class SharedModule {
static forRoot() : ModuleWithProviders {
return {
ngModule: SharedModule,
providers: [
ProductsService,
ProductsActions
]
};
}
}
そして、私のルートアプリケーションモジュールで:
NgModule({
imports: [
BrowserModule,
SharedModule.forRoot(),
RouterModule.forRoot(routes)
],
declarations: [ AppComponent ],
providers: [
provideStore({
... some stores ...
})
],
bootstrap: [ AppComponent ]
})
export class AppModule { }
しかし、私はProductsServiceをを注入しようとしています|
元の例外:ProductsServiceをなしプロバイダ子供モジュールにProductsActionsは、角度のショーは、エラーメッセージが続きます!
それは私の子供のモジュールです:
@NgModule({
imports: [
SharedModule,
RouterModule.forChild([
{ path: '', component: ProductsComponent }
])
],
declarations: [ ProductsComponent ]
})
export default class ProductsModule { }
IすでにインポートSharedModule。私はもっと何かをする?
----------------私はすでに私を解決UPDATE -------------------
問題。ルートモジュールのインポートにProductsModuleを追加する必要がありました。
@NgModule({
imports: [
BrowserModule,
ProductsModule,
RouterModule.forRoot(routes),
SharedModule.forRoot()
],
declarations: [ AppComponent ],
bootstrap: [ AppComponent ]
})
export class AppModule { }
理由は(私が思う)私はこのように、ルートのルートテーブルにimmadiately別のモジュールをロードしたかったということである:このようなすべての助けを
{ path: '', loadChildren: 'app/components/products/products.module' },
みんなありがとう!
同じインスタンスを共有する場合は、ルートコンポーネントにプロバイダ配列を宣言しないでください。それを共有モジュールで保つ方が良い。 – micronyks
可能な重複:http://stackoverflow.com/questions/38913976/how-to-set-global-providers-in-angular2-2-0-0-rc-5 – micronyks
重複していません。コードを見て、私はこのURLからの解決策を使用しましたが、それは私のためには機能しません。 –