2016-11-09 8 views
-1

私はangular2アプリケーションを開発中です。 データ共有に関する1つの質問がありました。私は多くのチュートリアルを見つける方法親の間でデータを共有する< - >子コンポーネントが、私は質問に答えを見つけられていない - どのように同じレベルにあるコンポーネントにデータを共有する方法。 私の私は中/サインアップなどのコンテンツのコンポーネントをレンダリングするメインページのコンテンツを表示するUI-ルータ-NG2を使用するアプリ、プロフィールページなど メインアプリのHTMLファイル内:Angular2:コンポーネントと同じレベルのデータを共有する

<header-app></header-app> 
<div class="main-container container"> 
    <ui-view></ui-view> 
</div> 

UIビューに何を想像してみてログインコンポーネントを表示し、ログインが成功した後、私はヘッダ情報にユーザー情報を渡す必要があります。どうすればいい?

+0

ログインと永続的なユーザー情報については、一度インスタンス化された(ルートモジュール内で)サービスを使用してから注入することをお勧めします。 – silentsod

+0

@ silentodどのような例があれば教えてください。データを格納し、必要なコンポーネントに注入するシングルトンサービスを作成することを意味しますか? – elpofigisto

答えて

1

あなたは

private valueToBeShared: datatype; 
export class Example implements OnInit { 
    constructor(private serviceName: ServiceName); 


ngOnInit(){ 
    this.valueToBeShared = this.serviceName.valueToStore; 
} 

いけないとの間でデータを共有する必要があるコンポーネントへのサービスはのOnInit いけない追加することを忘れサービスのインポート文を忘れて注入する

@Injectable() 

export class ServiceName { 
    public valueToStore: datatype //whatever you need 


} 

でサービスを作成することができますapp.module.tsのプロバイダへのサービス そしてLoginコンポーネントでは、サービスの値を設定します。

this.ServiceName.valueToBeStored = whateverYouNeed 
+0

この部分は私にとっては分かりやすいですが、ヘッダーコンポーネントのngOnInitは最初にページが読み込まれるときに1回しか動作しません。私はすべてのページのための1つのヘッダーを持って、私は記録されたユーザーのために他のヘッダーを使用せず、ユーザー名とログアウトのリンクを隠す/表示するだけです。 – elpofigisto

+1

解決策を見つけました:http://plnkr.co/edit/XqwwUM44NQEpxQVFFxNW?p=preview – elpofigisto

関連する問題