2

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

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

ここで、通常のAngular 2アプリケーションで簡単に実現できるグローバル変数を保存する必要があります(以下のリンクに従って)。

Angular 2 グローバル変数

Angular 2 - 認証トークンなどのグローバル変数を保存して、すべてのクラスがそれらにアクセスできるようにする最良の方法は何ですか?

通常の angular 2 アプリでこれを実現するために必要なことの 1 つは、グローバル サービスをブートストラップに渡すことです。

何か不足していない限り、Angular 2ユニバーサルアプリでそれを行うことはできないと思います。

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

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

ありがとうファハド・ムラジ

4

1 に答える 1

11

これは、 https://stackoverflow.com/a/39031152/1810391にある私の回答の方法 1 を使用する別の方法です。

共通のデータ構造を共有するにはglobal、すべてのコンポーネントと同様に、ハードコードされたインデックスを使用するだけです。

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';
    }
于 2016-09-20T07:10:08.523 に答える