In meiner Komponente habe ich eine Liste von Menüpunkten. Eine besteht aus Post von anderen Seiten.Angular 2: Routing mit verschiedenen Arten von Nackteilen
menu.component.ts
selectedPost(postslug){
console.log('post slg ', postslug);
this._router.navigate([postslug]);
}
selectedPage(pageslug){
console.log('page slg ', pageslug);
this._router.navigate([pageslug]);
}
app.routing.module.ts
const routes: Routes = [
{
path: '',
component: PostListComponent,
pathMatch: 'full'
}
,
{
path: ':postslug', // This is for the posts
component: PostSingleComponent,
}
,
{
path: ':pageslug',
component: PageSingleComponent // This is for the pages
}
];
Wie ich wegen benutzerdefinierten slug versteht sich, dass die ich es die richtige Komponente aufzunehmen und laden passieren sollte . Aber es lädt den ersten, der ': + etwas' hat.
Gibt es einen Weg um dies?
Wenn es nicht gibt gibt es eine Möglichkeit, über die Funktion eine benutzerdefinierte Kategorie und im Routing zu der Kategorie umleiten?
Zum Beispiel in der Funktion:
selectedPost(catName, postslug){
console.log('post slg ', postslug);
this._router.navigate([catName, postslug]);
}
Und in der Routing hätte ich:
const routes: Routes = [
{
path: '',
component: PostListComponent,
pathMatch: 'full'
}
,
{
path: 'catName/:postslug', // This is for the posts
component: PostSingleComponent,
}
,
{
path: ':pageslug',
component: PageSingleComponent // This is for the pages
}
];
Versetzen Sie sich in die Schuhe des Routers. Sie werden aufgefordert, zu/1234 zu navigieren. Wie können Sie möglicherweise wissen, ob 1234 ein Post oder eine Seite ist? Wie wäre es mit/posts/1234 und/pages/1234? –
tha'ts, was ich in meinem anderen Beispiel versucht habe, aber auch nicht funktioniert. Da ich nicht weiß, wie man benutzerdefinierte Kategorie auch übergibt. –
Wenn der Wert der Variablen catName entweder 'posts' oder 'pages' ist, benötigen Sie eine Route für den Pfad 'posts /: postslug' und eine weitere für 'pages /: pageslug'. –