2016-07-05 12 views
1

.jsonファイルからmyサービスの設定値を読み込みたいとします。.jsonファイルに格納されている値をロードする

これはこれまで私が行ってきたことです。最終的に、設定値によってログに反映されますが、残りの機能が実行される前には設定されません。

getService() 
{ 
    var service = new Service();   

    this.http.get('./config.json') 
    .map(res => res.json()) 
    .subscribe(data => this.config = data, 
    err => console.log(err)); 

    service.ValueA = this.config.ValueA; 

    return service; 
} 

助けてくれてありがとう!

答えて

0

アプリケーションの起動時にAPP_INITIALIZERサービスを利用してサービスをプリロードすることができます。アプリケーションは、実際に開始する前に、返された約束が解決されるのを待つでしょう。ここで

はサンプルです:

bootstrap(AppComponent, [ 
    { provide: APP_INITIALIZER, 
    useFactory: (service:Service) =>() => service.init(), 
    deps:[Service, HTTP_PROVIDERS], multi: true 
    } 
]); 

load方法は、そのような何か希望:あなたはServiceサービスを注入し、ValueAのように直接設定プロパティを使用できるようになることを行う

@Injectable() 
export class Service { 
    ValueA:string; 

    constructor(private http:Http) { 
    } 

    init() { 
    var promise = this.http.get('config.json').map(res => res.json()).toPromise(); 
    promise.then(config => this.ValueA = config.ValueA); 
    return promise; 
    } 
} 

を。そのため

@Component({ 
    (...) 
    providers: [ Service ] 
}) 
export class SomeComponent { 
    constructor(private service:Service) { 
    console.log(`[config] ValueA = ${service.ValueA}`); 
    } 
} 
+0

感謝:ここ

は、コンポーネント内のサンプルです。私はクロムコンソールから "サービスのためのプロバイダがいません!(トークンアプリケーション初期化 - >サービス)"を取得しています。何か案は? – hikizume

関連する問題