は私angular2アプリではありますにもかかわらず、私はいくつかのモジュールを持って、ルートモジュールを越えてほとんどが怠惰はItemModuleでAngular2サービス:二つの成分に異なるインスタンスを取得するだけで1つのプロバイダ
Routes = [{
path: '',
redirectTo: '/home',
pathMatch: 'full'
},
...
{
path: 'item',
loadChildren: 'app/item/item.module#ItemModule'
}
をロードされている、私が持っていますそれはコンストラクタで注入しますと、「プロバイダ」私はモジュール構造の理解何からそう
@NgModule({
imports: [
...
],
declarations: [
ItemDetailComponent,
ItemComponent,
ItemSearchComponent
],
exports: [
],
providers: [
ItemSearchService
]
})
の下にリストされているItemSearchService、ItemDetailComponentとItemSearchComponentの両方がItemSearchServiceの同じインスタンスを取得する必要があります。私はこれを実行すると
export class ItemSearchComponent implements OnInit {
constructor(private http: Http, private itemSearch: ItemSearchService ...)
export class ItemDetailComponent implements OnInit{
constructor(private route: ActivatedRoute, private itemSearch: ItemSearchService ...)
はまだ、できるだけ早く私はIteamSearchComponentからItemDetailComponentに移動して、ItemDetailComponentはもちろん意図されていないItemSearchService、新しい、別のインスタンスを取得します。
ルートモジュールでItemSearchServiceを提供するとすべて正常に動作し、すべてのコンポーネントが同じインスタンスを取得しますが、プロバイダをItemModuleに移動すると何かが間違っているようです。
これは、遅延ロードされているItemModuleと何か関係がありますか?私はここで少し迷っています。AppModuleにアプリ全体のシングルトンとしてサービスを提供するだけで十分な問題ではありませんが、すべてのサービスをルートに置くことは望ましくありません長い目で見れば、私はここで何かを見逃していますか?