Я использую новый 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;
Пожалуйста, помните, что это следует рассматривать как временное исправить, не подходит для автоматизированной производственной среды!