2016-09-17 5 views
0

私はAngularJSアプリケーションをAngular 2 Universalアプリケーションに変換しようとしています(サーバー側のレンダリングのため)。角度2 Universal - Storeグローバル変数

https://github.com/angular/universal-starter

今私は(リンク以下あたり)通常の角度2つのアプリケーションに容易に実現することができ、グローバル変数を格納する必要があります。あなたは、通常の角度2アプリケーションでこれを達成するために行う必要があります

Angular 2 global variable

Angular 2 - Whats the best way to store global variables like authentication token so all classes have access to them?

ことの一つは、ブートストラップするために、あなたのグローバルなサービスを渡すことです。

何かが見つからない限り、角度2の普遍的なアプリではできないと思います。

ユーザーデータを保存し、アプリケーション全体で使用したいと考えています。 asp.netのセッションデータとまったく同じです。さらに、これは親子コンポーネントを作成せずに行う必要があります

Angular 2 Universal Appにグローバル変数を保存するにはどうすればよいですか?

おかげ ファハドMullaji

+0

トップレベルのサービスを作成するだけです。方法1のための私の答えを点検しなさい、それはちょうどあなたが探しているものです:http://stackoverflow.com/a/39031152/1810391 –

+0

@JohnSiuは私が本当にやりたいようです。私はこれを私のアプリケーションに統合し、それがどのように機能するかを見なければなりません。ありがとう –

+0

それはあなたのために働く場合、私の答えをupvote覚えて、笑 –

答えて

9

これはちょうど、すべてのコンポーネントにglobalのようなハードコーディングされたインデックスを使用し、共通のデータ構造を共有するにはhttps://stackoverflow.com/a/39031152/1810391

で私の答えの方法1を使用する別の方法です。

globaldata.service.ts

import { Injectable } from '@angular/core'; 

interface ShareObj { 
    [id: string]: any; 
} 

@Injectable() 
export class GlobalDataService { 
    shareObj: ShareObj = {}; 
} 

app.module.ts(これはあなたのルートモジュールであると仮定)

import { GlobalDataService } from './globaldata.service'; 
// 
// skip .. 
// 

@NgModule({ 
    // 
    // skip .. 
    // 

    provider:[GlobalDataService] 

}) 
export class AppModule {} 

any.component.ts

code: 
    import { GlobalDataService } from './globaldata.service'; 
    // 
    // skip .. 
    // 

    constructor(private gd: GlobalDataService){ 
     // This can be string, array or object 
     this.gd.shareObj['global']='data'; 
    } 
+0

In Angular 4: プロバイダ:[GlobalDataService] –

+0

私は別のアカウントでログインしても、以前の値を保持していますが、コンストラクタはクリアされています。何が問題なのでしょうか? – devN