2015-12-20 14 views
11

Używam routingu Angular 2 dla mojej aplikacji i działa całkiem dobrze, ale nie mam pojęcia, jak zdefiniować trasę "w przeciwnym razie". Tak więc trasa, która będzie wyświetlana, jeśli nie ma, jeśli bieżący URL nie odpowiada żadnej "obsługiwanej" trasy.Równoważna z Angular 1 poza tym w Angular 2

Oto przykład z mojej obecnej konfiguracji:

@RouteConfig([ 
    { path: '/', name: 'Home', component: StoryComponent, useAsDefault: true }, 
    { path: '/story', name: 'Story', component: StoryComponent }, 
    { path: '/subscription', name: 'Subscription', component: SubscriptionComponent} 
]) 
+3

że funkcja nie jest jeszcze zaimplementowana, sprawdź [# 2965] (https://github.com/angular/angular/issues/2965) i [# 4055] (https://github.com/angular/angular/issues/4055) –

+0

Okay, dziękuję. – ssougnez

+0

Czy to nie dlatego masz "useAsDefault"? – jornare

Odpowiedz

8

Nie ma „inaczej” trasa w kątowym 2 jeszcze. Ale samą funkcjonalność można uzyskać stosując wieloznaczny parametru tak:

@RouteConfig([ 
    { path: '/', redirectTo: ['Home'] }, 
    { path: '/home', name: 'Home', component: HomeComponent }, 
    // all other routes and finally at the last add 
    {path: '/*path', component: NotFound} 

To będzie ładować tylko komponent „NOTFOUND” i url będą takie same jak to, co nawigacja. W przypadku, gdy chcesz wszystko nie pasujące do przekierowania połączeń do „404” url, można zrobić coś takiego:

//at the end of the route definitions 
{ path: '/404', name: '404', component: PageNotFoundComponent }, 
{ path: '/*path', redirectTo:['404'] }` 
+0

Przekierowanie nie działa, jeśli przekierowujesz do podprogramu. Sugerowałbym użycie komponentu 'NotFound' i wstrzyknięcie' Routera ', abyś mógł przekierować wewnątrz konstruktora. – gerric

0

Spróbuj

RouterModule.forRoot([ 
    { path: 'login', component: LoginComponent }, 
    { path: 'edit-event', component: EventComponent }, 
    { path: 'participants', component: ParticipantsComponent }, 
    { path: 'notification', component: NotificationComponent }, 
    { path: '', component: WelcomeComponent }, //default 
    { path: '**', component: WelcomeComponent } //page not found route 
], { useHash: true }) 

parametr useHash jest za pomocą skrótu url styl https://angular.io/docs/ts/latest/guide/router.html#!#route-config

1

Ten pracował dla mnie:

const routes: Routes = [ 
    { path: '', redirectTo: '/home', pathMatch: 'full' }, 
    { path: 'home', component: HomeComponent }, 
    // all other routes 
    { path: '**', redirectTo: '/home' } 
]; 

@NgModule({ 
    imports: [RouterModule.forRoot(routes)], 
    exports: [RouterModule] 
}) 
export class AppRoutingModule { }