2016-04-11 25 views
1

私はAngular2 beta.14を使用しています。Angularjs 2ルーティング:ログイン後にダッシュボードにリダイレクト

ダミーのログインを作成してから、保護された概要ページにユーザーをリダイレクトして、他のコンポーネントへのリンクを設定します。ログイン前

このよう

  1. localhost:3000/をご覧いただくか、任意の保護されたページは、ユーザーがログインした後、今localhost:3000/overview

にユーザーをリダイレクトlocalhost:3000/dummylogin

  • にリダイレクトされます、持っています

    app.componentから/dummylogin

    overview.componentのルートの設定が含まれている - など

    dummy-login.component/updateのルート設定が含まれている - ログインコンポーネントで/overview

    のルートの設定が含まれている、私はにユーザーをリダイレクトするthis.router.navigateByUrl(['Overview'])を使用しようとしましたダミー認証を行った後で、Overviewコンポーネント。しかし、私はこのエラーを受けました

    ORIGINAL EXCEPTION: Child routes are not allowed for "/dummylogin".  
    Use "..." on the parent's route path. 
    

    このエラーメッセージは私には意味がありません。そして、私が正しい方向にいるかどうかはわかりません。任意のアイデアをいただければ幸いです。

  • 答えて

    1

    "/ dummylogin"には子供のルートは許可されていません。親のルートパスで「...」を使用します。 、アプリを動作させるために、ルーティングの子を定義する必要があり、エラーからの明らかなように

    ますので、この

    @RouteConfig([ 
    { path: '/dummylogin/...', as: 'DummyLogin', component: DummyLogin} 
    ]) 
    

    ようdummyloginのルーティングの追加に/...を追加する必要がありますので、 angular2のルーティングルールに従って、あなたは子ルーティング時か、ルーティングを定義し、リースでこのようなデフォルトルートを1つ定義する必要がありdummyloginでとてもuseAsDefault: true

    に1つのルートを定義する必要があります -

    @RouteConfig([ 
    { path: '/overview', as: 'overview', component: overview, useAsDefault : true} 
    
    .... 
    

    ])

    は、それがまだ同じエラーMSGを促す

    +1

    このソリューションは私の質問に答えていますが、現在私のルーティング設計が悪いと認識しています。今、ルートアプリケーションコンポーネントに '/ DummyLogin'と'/RouteDispatcher'のルート設定を追加します。 RouteDispatcherコンポーネントには、 '/ Overview'などの他のコンポーネントの子ルート設定が含まれています。 –

    0

    /で始まり、/ dummyloginに行き、/ dummylogin/overview - childルートに行きましょう。おそらくスラッシュのない相対パスとして扱われます。私はthis.router.navigateByUrl(['/Overview'])を使うべきだと思います。

    +0

    も参照します。 –

    +0

    でも、大文字と小文字が区別される可能性があります。ルータの設定とURLが一致しているかどうかを確認してください。 – kemsky

    0

    ダミーのログインルートは親アプリコンポーネントの子ルートなので、アプリのRouteConfigにそのルートを指定する必要があります。これは、そのルートのパスの最後に/...を追加することによって行われます。

    例:

    @RouteConfig([ 
        { path: '/dummylogin/...', as: 'DummyLogin', component: DummyLogin } 
    ]) 
    export class AppComponent { 
    ... 
    } 
    

    編集:私はあなたががdummyloginの子ルートとして概要を持ちたいとは思わない

    は、そうしたいよ何で両方のルートを定義することです親アプリケーションコンポーネントのRouteConfigを呼び出し、依存関係注入を使用してログインコンポーネント内のルータにアクセスします。私は作ったplunker example

    +0

    さて、 "リンクはターミナル命令に解決されません"というプロンプトを出しました。次に 'dummy-login.component'のルート設定に' useAsDefault:true'を追加しました。次に、ログインページが表示されますが、URLは 'http:// localhost:3000/dummylogin/overview'です。 –

    +0

    ルートが解決する方法であるdummyloginの子ルートとして概要が設定されている方法。あなたは、概観がdummyloginの子供のルートではないフラットなルーティングシステムを持っている可能性があります。この場合、DummyLoginコンポーネントにRouteConfigデコレータは必要ありません。私は元の答えをリンクで更新しました。 –

    関連する問題