Angular2 Router v3, перейдите на другой уровень: TypeError: Невозможно прочитать свойство '_routeConfig' из null

Я использую новый Router v3.0.0-alpha.3. Представьте, что мои маршруты выглядят так:

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

С точки зрения компонента User я бы хотел перейти к компоненту Main. Если я перемещаюсь к любому компоненту на уровне настроек, он работает нормально, но когда я пытаюсь перейти на другой уровень, я получаю сообщение об ошибке:

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

Навигация выполняется с использованием директивы routerLink:

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

Это похоже на глобальную проблему. Я могу перемещаться только внутри этого уровня. Любая идея, как я могу обойти это?

Мои маршруты прошли в начальную загрузку:

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
    }]
}];

Редактировать:

Поскольку указанная ссылка в комментариях больше не работает, я предлагаю временное исправление. Ошибка все еще существует в альфа-версии маршрутизатора, но будет исправлена ​​здесь

Проблема в файле router.js , функция GuardChecks .prototype.runCanDeactivate строка 309 (в router v.alpha.7):

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

изменить на:

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

Пожалуйста, помните, что это следует рассматривать как временное исправить, не подходит для автоматизированной производственной среды!

10
задан Baumi 22 June 2016 в 06:16
поделиться