私のアプリのレイアウトを作成したい。だから、私は次のルートを使用します。あなたが見ることができるように角度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
ボタンをクリエイトしました。
答えをいただきありがとうございます。私はそれをよりカスタマイズするためにそのようにしています。他のレイアウトが必要な場合は、作成します。たとえば、ログイン/登録ページです。 – user348173
しかし、ContactModule内のルートがルートURLを扱う理由を理解できません。このルートを 'forChild'メソッドで登録します。私を説明できますか? – user348173
forChildで宣言されたルートがforRootで宣言されたルートにマージされるからです。 { パス:: ''、 redirectTo: 'コンタクト'、 pathMatch: 'フル' }、 { パス: 'コンタクト'、 loadChildren:「アプリ/連絡先/連絡先あなたのケースでは、ルートを宣言する。モジュール#ContactModule ' }をforRootに入れて、forの子に{path:' '、component:ContactComponent} を宣言します。これは効果的に{ パス: ''、 redirectTo: '連絡先'、 pathMatch: 'フル' }を上書きします。これは、あなたのnavが表示されない理由です。 –