2016-07-28 2 views
4

現在、標準UIを実装しているので、将来のUIプロジェクトで標準機能を実装するコードを共有できます。私の要件の1つは、これらのUIアプリケーションは、起動時にサーバーからのデータが必要なことです。これを私のライブラリの中にカプセル化したかったのです。ブートストラップ中の非同期HTTP呼び出し

私は自分のライブラリから私のアプリケーションにサービスを注入するときに、いくつかの設定を得るためにサーバーエンドポイントへのhttp呼び出しを実行したいと思います。これはインスタンス化時に発生する可能性があります。

これは良い考えであるかどうかわかりませんが、Angular 2のブートストラップルーチンは、注入されたサービスがhttp呼び出しを完了するのを待ちますか?

私はAngular 2アプリを非同期的にブートストラップするいくつかの方法を見てきましたが、私のアプリの中にこのコードを入れずに自分のライブラリに残したくありません。私はライブラリ内でこのプロセスの詳細を隠そうとしているので、他の開発者はそれをハックしようとしません。

答えて

3

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

はサンプルです:

provide(APP_INITIALIZER, { 
    useFactory: (service:SomeService) =>() => service.init(), 
    deps:[GlobalService, HTTP_PROVIDERS], multi: true 
}) 

init方法は、そのような何か希望:詳細については、githubの上で、この問題を参照してください

init():Promise<Site> { 
    var promise = this.http.get('config.json').map(res => res.json()).toPromise(); 
    promise.then(config => this.devServer = config.devServer); 
    return promise; 
} 

を:

関連する問題