2017-01-28 10 views
0

Angular2(CLIとWebpackを使用)プロジェクトで、apiキーやAPI URLなどの共通の設定データとパラメータを使用するにはどのような方法がありますか?これらのパラメータは、多くのコンポーネントとサービスで使用されます。Angular 2プロジェクトでアプリのワイドな設定を行うには

  • 専用サービスですか?
  • yamlまたはjsonで何か(もう一度サービス?)を解析しましたか?
  • オブジェクトをエクスポートするモジュールでは、

私たちのアプリはかなり大きくなっており、可能な限り軽く効率的なアプリを保つための解決策を見つけようとしています。

+0

それが依存ビルドシステム上で。ローカルまたは本番環境でアプリを実行すると、あなたのAPIのURLが異なるとみなします。 SystemJS、Webpackは何を使用していますか? – Matt

+0

実際には、dev、prodという2つの環境があります。 webpackはAngular-CLIプロジェクトとして使用しています。質問が更新されました。 – BlackHoleGalaxy

+0

私はこれに共通の方法はないと思います。ビルド時に環境変数を設定するためのメカニズムを提供するWebpackスタータープロジェクトhttps://github.com/AngularClass/angular2-webpack-starterがあります。 webpack.dev.jsとwebpack.prod.jsのMETADATAオブジェクトを見てください。多分あなたはそれらから胸を張ることができます。 – Matt

答えて

1

設定データを保存するだけで本格的なサービスやモジュールを使用する必要はありません。

あなたはconstであなたの設定情報を入れて、依存性注入を介して可変を公開することができます:

const SETTINGS = { 
    apiUrl: 'someUrl', 
    apiKey: 'someKey', 
    // ... 
}; 

// Then, in your AppModule, declare the value for DI 
@NgModule({ 
    providers: [ 
    { provide: 'SETTINGS', useValue: SETTINGS }, 
    // ... 
    ] 
}) 

次に、あなたが設定にアクセスする必要がある時はいつでも(サービスまたはコンポーネントで...)、注入それ:など

import { Inject } from "@angular/core"; 

export class MyComponent { 
    constructor(@Inject('SETTINGS') private settings: any) { 
    } 
} 

このアプローチの上振れは、あなたが環境に応じて異なる設定を使用することができるということですか、あなたはユニットテストを実行しているかどうか、

+1

壮大なmerci;)ありがとう。 – BlackHoleGalaxy

関連する問題