2017-06-17 14 views
0

私は独自の状態(インスタンス変数など)を持つサービスServiceAを持っています。私のモジュールにはサービスServiceAの複数のインスタンスがあります。角2:異なるルート間で非モジュールレベルのサービスを共有する方法

@Injectable() 
export class ServiceA { 
    // It defines instance variables. 
} 

私はServiceAの複数のインスタンスを持っている必要がありますので、私はそれモジュールレベルのコンポーネント作ることができないのです。 ComponentB

ServiceAインスタンスをインスタンス化し、潜在的にその状態を変更することができます。

@Component({ 
    providers = [ServiceA], 
}) 
export class ComponentB { 
    // changes the state of ServiceA. 
} 

ComponentBのHTMLテンプレートで私は同じServiceAインスタンスにアクセスする必要があるComponentCへのルートを持っています

<a routerLink="/path_to_component_c"></a> 

ここでは、ComponentCの定義があります。

はモジュールレベルのコンポーネントであった場合、それらは両方とも同じモジュールにあるので
@Component({ 
    providers = [], 
}) 
export class ComponentC { 
    // accesses ServiceA. 
} 

ComponentBComponentC横切ってそれを共有問題がないであろう。しかし、ServiceAComponentBに直接注入されているので、これ以上はできません。 ComponentCが1つだけ作成され、の後にComponentCが作成されるたびに注意してください。

ComponentBComponentCの間でデータを共有する方法はありますか?ありがとう!

答えて

0

ServiceA工場のとして使用するように思えますが、シングルトンではありません。これはFactory Providerで行うことができます。

も参照してください。this回答。

ComponentBとComponentCの間でデータを共有する方法はありますか?ありがとう!

いくつかの方法があります。サービスは1つです(はい、あなたの工場のインスタンスのためのサービスを持つことができます!)。 ComponentCComponentBの子である場合は、inputを使用できます。

関連する問題