2016-12-13 20 views
1

角度2のニュアンスを把握するだけで、確立しようとしていることの1つは、どのコンポーネントでも使用できるサイトワイド変数を作成するためのベストプラクティスです。角度2 - dbからグローバル変数を作成する

私はサービスからDBに変数を引き出しています。このサービスには、Http.get()メソッドを使用してデータを取得するgetVars()メソッドがあります。私の質問は、変数を必要とするたびにそのメソッドを使用するのではなく、一度使用して定数変数(または同様の変数)に格納してから、いつでも呼び出すことができます。それはルートモジュールにありますか?

答えて

1

角度の2つのアプリケーションでは、InjectableはすべてSingletonです。メソッド(基本的に初期化、チェックAPP_INITIALIZER)で値を取得し、オブジェクトのプロパティに格納し、サービスを注入するあらゆる場所で取得することができます。次に、構成サービスの簡単な例を示します。あなたのProviders配列

ConfigService, 
    { 
     provide: APP_INITIALIZER, 
     useFactory: (config: ConfigService) =>() => config.load(), 
     deps: [ConfigService], 
     multi: true 
    }, 

config.service.tsあなたApp.module.tsで

@Injectable() 
export class ConfigService { 
    private _config: Object; 
    private http: Http; 

    constructor(private injector: Injector) { 
    } 

    get(optionName: any) { 
     return this._config[optionName]; 
    } 


    load() { 
     this.http = this.injector.get(Http); 

     let observable = this.http.get('dist/config/configuration.json') 
      .map(res => res.json()); 

     observable.subscribe(config => this._config = config); 
     return observable.toPromise(); 
    } 
} 

次に、あなただけのすべてのコンポーネントにあなたのサービスを注入することができますし、直接変数にアクセスconfigService.get( 'yourVariable')

関連する問題