2016-06-19 17 views
1
私が呼び出すことのできるサービスを、持っている

AngularJS 2ローカライズサービスのベストプラクティス

localization('navbar.home')

をそして、それは「ホーム」を返します。

いくつかの質問:

  1. 瞬間は、私は私が仕事のすべてのコンポーネントにこのサービスを注入する必要があり、その後、私はlet lang = localization;を書き、NG1 $rootScopeのようなものにそれをバインドする方法はあります、一度ロードする必要がありますか?
  2. 一度バインドする方法はありますか? NG1は私に{{::lang('navbar.home')}}と書くオプションを与えたので、一度だけ呼び出されました。

私はNG1から移行していますので、ローカライズのための私の態度は、完全に時代遅れの、または間違っている可能性があります。

ここでベストプラクティスは何ですか?それをサービスのままにしておきますか?一度それをバインドしないでください?

答えて

1

注入されたサービスでは、すべてのコンポーネントにそれらを使用したい場合、あなたはルートレベル(ブートストラップ)で一度だけそれらを注入することができます継承されています

bootstrap(AppComponent, [ 
/* everything you put here is available in all components */ 
    ServiceOne, 
    ServiceTwo 
]) 

は、あなたはまだあなたのコンポーネントでそれらを宣言する必要がありますコンストラクタ:

constructor(private so: ServiceOne) {} 

ただし、コンポーネントのproviders[]メタデータには含めないでください。

その他のもので助けてください(;

関連する問題