2017-10-13 8 views
1

例として、グローバルグローバルオブジェクトを取得します。ブラウザを更新せずに1ページのWebアプリケーションを使用する場合、最初のエントリはサービス内のユーザオブジェクトを入力することができます。できるだけ早くサービスをインスタンス化する

しかし、URLはまだアプリの別のルートに行くためのリンクとして使用されています。どの時点で、ルート上のユーザーオブジェクトを使用するすべてのコンポーネントが、サーバーからユーザーオブジェクトをロードする必要がありますか?サービスはuserを非同期にロードしているので、現在のルート内のこれらのコンポーネントは、このユーザーオブジェクトが利用可能になる前に、どうして確実にユーザーを取得できますか?

私はこの問題を解決したいので間違った質問をしている可能性があります。ですから、他のすべてのコンポーネントの前にサービスオブジェクトをロードすることができれば解決します。

サービスをapp.component.tsに入れても問題はありません。ユーザーがまだundefinedの間に他のコンポーネントがまだインスタンス化されています。

答えて

4

APP_INITIALIZERを使用して、Angularがアプリを初期化する前に値がロードされていることを確認したり、データが利用可能になるまでルーティングを遅らせるガードを使用したりできます。

は、私はこのソリューションをテストしている

+0

も参照してください。できます。しかし、これは角度コードで実験的なものとしてマークされていますか?私には、私が望むものを達成するために、これ以外の方法はないと思われます。どんなルートが入力されてもサービスをインスタンス化することができます。 https://github.com/angular/angular/blob/4.4.5/packages/core/src/application_tokens.ts#L64-L64 – Hao

+0

実験的とマークされていてもあまり意味がありません。最終的にこの機能を再設計することを検討するかもしれませんが、2.0.0-alpha以降も同じです。 –

関連する問題