2016-08-25 18 views
1

私はRC5を使ってAngular2 Appを書いています。Angular2 RC5 - 設定ファイルをロードした後のルート

AppComponentが読み込まれると、httpとを使用してアプリケーションがconfigファイルを要求するようになり、ロードされた後、指定したルートにアプリケーションが移動しますか?

どうすれば実現できますか?

'canActivate'プロパティが各ルートにありますが、ユーザーが新しいルートに移動するたびに何かしたい場合は、より多くのことがあります。主に認証目的で使用されていますが、認証で保護されるルートはほんの少しですが、私のケースではAppComponentが読み込まれるときに設定を読み込みたいと思います。すべてのルートのアクティブ化やナビゲーションではありません。

希望私は達成しようとしている私の自己を明確にしました。

+0

私はあなたが決意を探していると思う:https://angular.io/docs /ts/latest/api/router/index/Routes-type-alias.html –

答えて

1

最初の再ナビゲートが行われたことをcanActivateガードに保存することができます。その後のコールでは、trueが返されます。

あなたは、単一のルート

{ path: '**', InitComponent } 

にルータを設定し、InitComponentに前方に最初に要求されたパスに、その後、あなたのコンフィギュレーションをロードし、ルータを再設定(すべてのルートを渡す)とがあります。

も参照してくださいAngular 2 Dynamic Route Building & Component Level Permissions

+0

はい、私はそれを考えました。しかし、RC5には、アプリケーションが初めてロードされたときにどのルートにも行く前に、それが行って設定を取得する他の手段があります。私はそのサービスコールを解決することを意味します... – microchip78

+0

このソリューションでは、私は新しいルートを追加するたびに、** canActivate **を追加する必要があります...そのエレガントではない – microchip78

+0

あなたは何を意味するのか分かりません。これは、深いリンクを持つアプリの最初の負荷ですか? –

1

あなたは、要求を行うリゾルバを作成するルートにリゾルバを追加し、コンポーネントののOnInitで解決コンフィグデータを取得する必要があります。

Component.Route:

export const routes: Route[] = [ 
    { path: ':id', component: Component1, resolve: { data: Comp1Resolver }} 
]; 

Comp1Resolver:

@Injectable() 
export class Comp1Resolverimplements Resolve<Config> { 
    constructor(private configService: ConfigService) { } 

    resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<Config> { 
     return this.configService.get(route.params['id']); 
    } 
} 

コンポーネント1:

ngOnInit() { 
let that = this; 
this.route.data.subscribe(data => { 
that.config= data['data']; 
+0

私はあなたの意見を持っています。しかし、このシナリオでさえ、それはルートで結ばれています。私の要求は、サービスからの応答を受信し、サーバーからアプリケーション構成をロードするまでは、どのパスにも移動しないことです。上記の例では、パスhttp:// hostname /:idにルーティングすると、Comp1Resolverが呼び出されますが、ユーザーがhttp:// hostname/aboutまたは他のルートを呼び出すとどうなりますか?したがって、同じリゾルバですべてのルートを設定する必要もあります。 – microchip78

+0

それからガンターが言うことをすることができます。リゾルバで1つのルートを作成し、/ about、/:idなどのchildRoutesを作成します。次に、あなたのURLはhostname/parent/hostname/parent/id –

関連する問題