J'utilise Angular 5 pour créer un petit site Web de type brochure. Jusqu'à présent, j'ai configuré mes routes, et le titre de la page change dynamiquement en fonction de la route activée. J'ai réussi à le faire fonctionner en suivant les instructions de ce blog : https://toddmotto.com/dynamic-page-titles-angular-2-router-events
Je stocke actuellement mes itinéraires et mes titres dans app.module.ts comme tel :
imports: [
BrowserModule,
RouterModule.forRoot([
{
path: '',
component: HomeComponent,
data: {
title: 'Home'
}
},
{
path: 'about',
component: AboutComponent,
data: {
title: 'About'
}
},
{
path: 'products-and-services',
component: ProductsServicesComponent,
data: {
title: 'Products & Services'
}
},
{
path: 'world-class-laundry',
component: LaundryComponent,
data: {
title: 'World Class Laundry'
}
},
{
path: 'contact',
component: ContactComponent,
data: {
title: 'Contact'
}
},
{
path: '**',
component: NotFoundComponent,
data: {
title: 'Page Not Found'
}
}
])
],
J'aimerais également y stocker mes méta-descriptions, si je les ajoute sous la rubrique data:
serait assez facile.
Je récupère les données du titre avec le code suivant, qui est indiqué dans le lien du blog ci-dessus :
ngOnInit() {
this.router.events
.filter((event) => event instanceof NavigationEnd)
.map(() => this.activatedRoute)
.map((route) => {
while (route.firstChild) route = route.firstChild;
return route;
})
.filter((route) => route.outlet === 'primary')
.mergeMap((route) => route.data)
.subscribe((event) => {
this.titleService.setTitle(event['title']);
});
}
Ma question est donc la suivante : existe-t-il un moyen de définir dynamiquement la méta-description en utilisant la même méthode ? S'il existe un moyen de combiner les fonctions de titre de page et de méta-description, ce serait l'idéal.
Je n'ai qu'une formation très limitée sur Angular, donc c'est peut-être une question de débutant. Je suis plutôt du genre designer/css/html.
0 votes
Depuis angular 4, il existe déjà un service intégré qui fait cela import { Meta } de '@angular/platform-browser' ; voir ici angular.io/api/platform-browser/Meta
0 votes
@elasticrash Oui, je me suis renseigné sur Meta. Je suis plus intéressé par la façon de mettre en œuvre Meta dans ce que j'ai déjà.
0 votes
Où se trouve la méta-description ?
0 votes
@Melchia Si possible, j'aimerais stocker mes méta-descriptions avec les titres des pages dans app.module.ts.
0 votes
Ne pouvez-vous pas simplement ajouter une description d'attribut dans les données et faire la même chose que vous avez fait dans ngOnInit ?