2016-07-01 3 views
0

私はRC4と "@ angle/router": "3.0.0-beta.2"を使ってAngular2クライアントを持っています。アプリケーションが最初に読み込まれると、webApi呼び出しが(同じドメインに)作成され、いくつかの設定データが取得されます。これは重要です。これにはwebApi(およびその他のもの)のURLが含まれています。Angular2 - ルーティングの前にセットアップを待つ

これが完了するまで、ログインまたはページを表示しないでください。

<div *ngIf="IsConfigReady"> 
    <router-outlet></router-outlet> 
</div> 

しかし、私は、私はルータのコンセント隠す場合、ルーティングエラーが出る::

Error: Cannot find primary outlet to load 'MyComponent'

をユーザがそのURLに多くのコンポーネントに行くことができ、私は、これは次のように終了するまで内容を非表示にしてみてくださいそれらを直接対象とする。私はすべての個々のコンポーネントにngifを置くことはできません。

ルーティングが始まる前にセットアップが完了するのを待つ方法があるようです。 CanActiveでルーティングを停止することはできますが、アプリの準備が整ったら続行しません。

多分私はそれを別の方法で考える必要があります。 アイデア

答えて

0

これにはcanActivateガードを使用する必要があります。 CanActivateはあなたには、いくつかのサービスにURLを保存

state.url 

ようstateからURLを抽出することができます署名

canActivate(
    // Not using but worth knowing about 
    next: ActivatedRouteSnapshot, 
    state: RouterStateSnapshot 
) 

を以下ました。設定のロードが返された後、適切なURLにナビゲートして、バックフォームサービスにアクセスできます。

関連する問題