2017-02-20 25 views
0

私のアプリのレイアウトを作成したい。だから、私は次のルートを使用します。あなたが見ることができるように角度2.すべてのルートのメインレイアウト

export const routes: Routes = [ 
{ 
    path: '', 
    component: MainLayoutComponent, 
    children: [ 
     { 
     path: '', 
     redirectTo: 'contact', 
     pathMatch: 'full' 
     }, 
     { 
     path: 'contact', 
     loadChildren : 'app/contact/contact.module#ContactModule' 
     } 
    ] 
    } 

]; 

@NgModule({ 
    imports: [RouterModule.forRoot(routes)], 
    exports: [RouterModule] 
}) 
export class AppRoutingModule {} 

私はレイアウトのためMainLayoutComponentを使用しています。そして、私のアプリケーションが起動するとき、私はcontactパスにリダイレクトしたいです。

レイアウトが含まれているナビゲーションとrouter-outlet

@Component({ 
    template: ` 
    <nav>Navigation content</nav> 
    <div class="container"><router-outlet></router-outlet></div> 
    `, 
}) 

これはContactComponentでテンプレートです:
<h2>Contact Component</h2>

、アプリが実行されたとき、私はContact Componentメッセージが、私は見ていない見ている問題ナビゲーション。しかし、私がlocalhost:3000/contactを開いた場合、私はナビゲーションとContact Componentメッセージを参照してください。私は何が欠けていますか?

Plunkerです。あなたは確認することができます、 URLにリダイレクトするためにGo to Contactボタンをクリエイトしました。

答えて

0

多分あなたはそれを意図的にやったことがあります。しかし、あなたは本当に複雑すぎることがあるようです。あなたは簡単にあなたがはるかに単純な構造とし、あなたの主成分でナビゲーションを入れて何をしようとして達成することができます:とにかく

https://plnkr.co/edit/pCQvJ3PwO0nMPxRvWR1o?p=preview

- あなたのplunkerは、あなたが期待する何をされていない理由があるので、あなたのコンタクトモジュールにあなたにもいくつかのルーティングを定義しました:

{ path: '', component: ContactComponent } 

私は接触部品からコンタクト・ルーティングを削除し、今では動作しているようだ:

@NgModule({ 
    imports:  [ ], 
    declarations: [ ContactComponent ], 
    providers: [ ] 
}) 
export class ContactModule { } 

https://plnkr.co/edit/Rwl5Hw83LfkLmG4wF3oK?p=preview

+0

答えをいただきありがとうございます。私はそれをよりカスタマイズするためにそのようにしています。他のレイアウトが必要な場合は、作成します。たとえば、ログイン/登録ページです。 – user348173

+0

しかし、ContactModule内のルートがルートURLを扱う理由を理解できません。このルートを 'forChild'メソッドで登録します。私を説明できますか? – user348173

+0

forChildで宣言されたルートがforRootで宣言されたルートにマージされるからです。 { パス:: ''、 redirectTo: 'コンタクト'、 pathMatch: 'フル' }、 { パス: 'コンタクト'、 loadChildren:「アプリ/連絡先/連絡先あなたのケースでは、ルートを宣言する。モジュール#ContactModule ' }をforRootに入れて、forの子に{path:' '、component:ContactComponent} を宣言します。これは効果的に{ パス: ''、 redirectTo: '連絡先'、 pathMatch: 'フル' }を上書きします。これは、あなたのnavが表示されない理由です。 –

関連する問題