2016-06-17 5 views
10

Używam nowego routera v3.0.0-alpha.3. Wyobraź sobie, że moje trasy wyglądają następująco:Angular2 Router v3, przejdź do innego poziomu: TypeError: Nie można odczytać właściwości "_routeConfig" o wartości zerowej

       App 
           /\ 
          /\ 
         Settings Main 
         /\   
         / \  
         User Account 

Z widoku komponentu użytkownika chciałbym przejść do komponentu głównego. Gdybym nawigować do jakiegokolwiek składnika w ustawieniach poziom to działa dobrze, ale gdy próbuję przejść do innego poziomu pojawia się błąd:

EXCEPTION: Error: Uncaught (in promise): TypeError: Cannot read property '_routeConfig' of null 

I naviagate stosując dyrektywę routerLink:

[routerLink]="['/main']"   <- doesn't work 
[routerLink]="['/settings']"  <- works 
[routerLink]="['/settings/user']" <- works 

Wydaje się to jak globalny problem. Mogę poruszać się tylko na tym samym poziomie. Jakiś pomysł, jak mogę go ominąć?

Moje trasy przeszedł do bootstrap:

export const routes: RouterConfig = [ 
    ...MainRoutes, 
    ...SettingsRoutes 
]; 

export const APP_ROUTER_PROVIDERS = [ 
    provideRouter(routes) 
]; 

main.routes.ts:

export const MainRoutes: RouterConfig = [{ 
    path: '/main', 
    component: SettingsComponent 
}]; 

settings.routes.ts:

export const SettingsRoutes: RouterConfig = [{ 
    path: '/settings', 
    component: SettingsComponent, 
    children: [{ 
     path: '/user', 
     component: UserSettingsComponent, 
     index: true 
    }] 
}]; 

EDIT:

Ponieważ podany link w komentarzach już nie działa, proponuję tymczasową poprawkę. Błąd nadal istnieje w alpha.7 wersji routera ale będzie ustalona here

problem jest w router.js plików, funkcja GuardChecks.prototype.runCanDeactivate linia 309 (w routerze v.alpha. 7):

var canDeactivate = curr._routeConfig ? curr._routeConfig.canDeactivate : null; 

go zmienić na:

var canDeactivate = curr && curr._routeConfig ? curr._routeConfig.canDeactivate : null; 

Proszę pamiętać, że powinien on być traktowany jako tymczasowy fix, nie nadaje się do zautomatyzowanej produkcji pl vironment!

+2

Wydaje się być https: //github.com/angular/vladivostok/issues/48 –

+0

Czy wypróbowałeś Angular2 RC.3? –

+1

W rzeczywistości zrobiłem to po twoim komentarzu, ale to niczego nie zmieni, ponieważ problem tkwi w routerze, który nie ma jeszcze nowej wersji: https://www.npmjs.com/package/@angular/router – Baumi

Odpowiedz