Je suis novice dans angular 4. Ce que j'essaie de faire est de définir différents en-têtes et pieds de page pour différentes pages de mon application. J'ai trois cas différents:
itinéraires: ['login', 'register']
itinéraires: ['', 'à propos', 'contact']
itinéraires: ['tableau de bord', 'profil']
Je lance l'application temporairement en ajoutant un en-tête et un pied de page à mon composant de routeur html.
S'il vous plaît me conseiller une meilleure approche.
Ceci est mon code:
const appRoutes: Routes = [
{ path: '', component: HomeComponent},
{ path: 'about', component: AboutComponent},
{ path: 'contact', component: ContactComponent},
{ path: 'login', component: LoginComponent },
{ path: 'register', component: RegisterComponent },
{ path: 'dashboard', component: DashboardComponent },
{ path: 'profile', component: ProfileComponent },
// otherwise redirect to home
{ path: '**', redirectTo: '' }
];
export const routing = RouterModule.forRoot(appRoutes);
<router-outlet></router-outlet>
<site-header></site-header>
<div class="container">
<p>Here goes my home html</p>
</div>
<site-footer></site-footer>
<site-header></site-header>
<div class="container">
<p>Here goes my about html</p>
</div>
<site-footer></site-footer>
<div class="login-container">
<p>Here goes my login html</p>
</div>
<app-header></app-header>
<div class="container">
<p>Here goes my dashboard html</p>
</div>
<app-footer></app-footer>
J'ai vu cette question sur le débordement de pile mais je n'ai pas eu une image claire de cette réponse
Vous pouvez résoudre votre problème en utilisant des itinéraires enfants.
Voir la démonstration de travail sur https://angular-multi-layout-example.stackblitz.io/ ou modifier sur https://stackblitz.com/edit/angular-multi-layout-example
Définissez votre itinéraire comme ci-dessous
const appRoutes: Routes = [
//Site routes goes here
{
path: '',
component: SiteLayoutComponent,
children: [
{ path: '', component: HomeComponent, pathMatch: 'full'},
{ path: 'about', component: AboutComponent }
]
},
// App routes goes here here
{
path: '',
component: AppLayoutComponent,
children: [
{ path: 'dashboard', component: DashboardComponent },
{ path: 'profile', component: ProfileComponent }
]
},
//no layout routes
{ path: 'login', component: LoginComponent},
{ path: 'register', component: RegisterComponent },
// otherwise redirect to home
{ path: '**', redirectTo: '' }
];
export const routing = RouterModule.forRoot(appRoutes);
Référence recommandée: http://www.tech-coder.com/2017/01/multiple-master-pages-in-angular2-and.html
vous pouvez utiliser un enfant, par exemple.
const appRoutes: Routes = [
{ path: '', component: MainComponent,
children:{
{ path: 'home' component:HomeComponent},
{ path: 'about', component: AboutComponent},
{ path: 'contact', component: ContactComponent},
..others that share the same footer and header...
}
},
{ path: 'login', component: LoginComponent },
{ path: 'register', component: RegisterComponent },
{ path: 'admin', component:AdminComponent,
children{
{ path: 'dashboard', component: DashboardComponent },
{ path: 'profile', component: ProfileComponent }
..others that share the same footer and header...
}
}
{ path: '**', redirectTo: '' }
];
MainComponent et AdminComponent comme
<app-header-main></app-header-main>
<router-outlet></router-outlet>
<app-footer-main></app-footer-main>
le post parle de séparer dans différents fichiers les itinéraires