2016-10-20 20 views
1

app.component、body.component、detail、componentの3つのコンポーネントがあります。私は2つのコンポーネントを通信するサービス共有データを使用するM I detailcomponetクリックボタン、 でiはapp.component loginameに等しいdetailcomponetのLOGNAME をしたいが、私がサービスにデータを渡すことができ が、appcompontは効果ができませんでした。 アプリと詳細コンポーネント親子コンポーネントではないデータを渡す方法

enter image description here

サービスルータとボディ部品

enter image description here

+0

共有サービスを使用して、直接の親子または兄弟でないコンポーネント間でデータを共有します。 https://angular.io/docs/ts/latest/cookbook/component-communication.html –

+0

私はちょうどコードを共有サービスをこのメソッドを使用して変更、私はサービスにデータを渡すことができました、console.logはそれを確認します。アプリコンポーネントには影響しませんでした。あなたはそれを見る時間を持つことができます。私はそれ以上の2枚の絵は非常にuと.thankペースト、アプリのコンストラクタ:コンストラクタ(プライベートpsservice:Passservice){ \t psservice.passdata $ .subscribe( \t \t shardata => { \t \t \t this.loginname = shardata; \t \t //this.loginname='haha "$ {shardata}" hellow '; \t \t //console.log(shardata); \t \t})。 – percinor

+0

サービスを各コンポーネントに追加すると、各コンポーネントは異なるサービスインスタンスを取得します。両方の親であるコンポーネントのプロバイダに追加するか、 '@NgModule() 'のプロバイダに追加するかのいずれかによって、アプリケーションインスタンス全体が1つのサービスインスタンスと共有されます。 –

答えて

1

あなたは、各コンポーネントにサービスを追加する場合は、各コンポーネントは異なるサービスインスタンスを取得します。両方の親であるコンポーネントのプロバイダに追加するか、@ NgModule()のプロバイダに追加すると、1つのサービスインスタンスがアプリケーション全体と共有されます。

関連する問題