2016-11-15 6 views
1

Ich versuche, Kinder-Router zu verwenden. Mein Haupt-Routing-Modul (im Root-Verzeichnis):angular2 Route für NotFound Seite

import { NgModule }    from '@angular/core'; 
import { RouterModule, Routes } from '@angular/router'; 
import { HomeComponent } from './home/home.component'; 
import { ProfileComponent } from './profile/profile.component'; 
import { NotFoundComponent } from './notfound/notfound.component'; 
import { LoggedInGuard } from './login-guard/login-guard.component'; 

const routes: Routes = [ 
    {path: '', redirectTo: 'home', pathMatch: 'full'}, 
    {path: 'home', component: HomeComponent, pathMatch: 'full'}, 
    {path: 'profile', component: ProfileComponent, canActivate: [LoggedInGuard], canLoad: [LoggedInGuard]}, 
    {path: '**', component: NotFoundComponent}, 
]; 
@NgModule({ 
    imports: [ RouterModule.forRoot(routes) ], 
    exports: [ RouterModule ] 
}) 
export class AppRoutingModule {} 

und Kind-Routing-Modul (in Unterverzeichnis):

import { NgModule }  from '@angular/core'; 
import { RouterModule } from '@angular/router'; 

import { PPComponent } from './pp.component'; 
import { MembersComponent } from './members/members.component'; 
import { HistoryComponent } from './history/history.component'; 


@NgModule({ 
    imports: [ 
    RouterModule.forChild([ 
     { 
     path: 'partner-program', 
     component: PPComponent, 
     children: [ 
      { 
      path: '', 
      redirectTo: 'members', 
      pathMatch: 'full' 
      }, 
      { 
      path: 'members', 
      component: MembersComponent, 
      }, 
      { 
      path: 'history', 
      component: HistoryComponent, 
      }, 
     ] 
     }, 


    ]) 
    ], 
    exports: [ 
    RouterModule 
    ] 
}) 
export class PPRoutingModule { } 

Ich habe eine Frage zu dieser Strecke {path: '**', component: NotFoundComponent}. Angular2 sieht diese Route vor allen Kinderrouten. Und als Ergebnis zeigt die URL 'http://localhost:3000/partner-program' nicht gefundene Komponente an. Wenn ich notFound Route entferne, funktioniert 'http://localhost:3000/partner-program' gut. Wie kann ich nonFound Route deklarieren und Angular2 im letzten Zug (nach Kinderrouten) überprüfen?

Günter Zöchbauer, meinst du etw so?

+0

Ich denke, Ihre 'PPRoutingModule' Routen sind nicht richtig als Child-Routen konfiguriert. Eine untergeordnete Route muss ein Kind einer übergeordneten Route sein. ''http: // localhost: 3000/partner-program' 'kann nur dann übereinstimmen, wenn es sich um eine untergeordnete Route von' {path:' ', redirectTo:' home ', pathMatch:' full '}, '(leerer Pfad) aber handelt es ist nicht. –

Antwort

5

Wenn Sie diese Module in das Hauptmodul importieren, stellen Sie bitte sicher, dass AppRoutingModule am Ende hinzugefügt wird. Es ist alles über die Reihenfolge der Routen Registrierung

+0

omg, vielen dank. Es klappt! –