2017-09-21 6 views
2

多くのコンポーネントで使用される文字列定数がいくつかあります。ハードコードや個々のコンポーネントの文字列として記述したくありません。 angular2アプリケーションでそれらを維持するにはどこが最適ですか?angular2多くの文字列値が格納されています

答えて

1

angleJs 1のようにconstantまたはconfigというようなものはありません。

私は飛行機のクラスを作り、そこにあなたのすべての弦を置くと言うでしょう。クラス名に直接アクセスできるように静的にすることができます。

export class StngsValue { 
    static finrstWord = 'this is test string'; 
    static secoundWord = 'this is test string'; 
    static thirdWord = 'this is test string'; 
} 

それとも、JSONファイル内のすべての文字列を入れて、解決策の一つは、共有サービスで、あなたの文字列を置くことであろうこの

@Injectable() 
export class ConfigService { 
    public config: any; 
    private configObs: Observable<any>; 

    constructor(private http: Http) { 
    } 

    public load(): Observable<any> { 
    if (this.config) { 
     return Observable.of(this.config); 
    } else { 
     this.configObs = this.http.get('/configuration.json').map((res) => { 
     this.config = this.config || res.json() || {}; 
     return this.config; 
     }); 
    } 

    return this.configObs; 
    } 
} 
1

ような角度サービスからそのjosnファイルを呼び出すことができます。そのプロパティを必要とするすべてのコンポーネントにサービスを注入します。あなたの文字列が定数でなく、文字列の値が更新されている場合(これはあなたのケースではないと思います)、これは特に良いことです。そして

export const CONFIG = Object({ 
    MYSTRING: 'Hello', 
... 
)} 

を(例えば)などの部品にそれを使用する:

import { CONFIG } from 'shared/config'; 

    myString = CONFIG.MYSTRING; 

他の方法はそうよう、 '普通' typescriptですクラス、* .TSファイルを宣言することであろう

これは、すべての定数を1か所にグループ化するのに適しています。

また、1つの定数のために行くことを選択することができます

export const MyString = "Hello"; 

、その後、あなたが以前のように、あなたのコンポーネントでそれをインポートすることができます。

0

共有サービスを使用して、すべてのコンポーネントがそのサービスからデータ/メソッド/ etcにアクセスできるようにすることができます。そうあなただけ

shared.service.ts 
内部

としてあなたのファイルを宣言します。あなたのapp.module.tsで

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

@Injectable() 
export class SharedService{ 

    public str: string; 

} 

サービスをインポートし、@ngModuleで、プロバイダに追加します。その後、

providers: [ SharedService ] 

いずれかのコンポーネントでサービスをインポートするだけで、コンポーネントコンストラクタで次のように追加します。

constructor(public service: SharedService){} 

ここでは、あなたのコンポーネントにサービスを注入している、あなたは今、あなたがthis.service.string

を使用して文字列にアクセスすることができますについて dependecy注入

を読むことができます

関連する問題