Я использую новый Router v3.0.0-alpha.3. Представьте, что мои маршруты выглядят так:
App
/\
/ \
Settings Main
/ \
/ \
User Account
С точки зрения компонента User я хотел бы перейти к основному компоненту. Если я перехожу к любому компоненту на уровне настроек, он отлично работает, но когда я пытаюсь перейти на другой уровень, я получаю сообщение об ошибке:
EXCEPTION: Error: Uncaught (in promise): TypeError: Cannot read property '_routeConfig' of null
Я naviagate с помощью директивы routerLink:
[routerLink]="['/main']" <- doesn't work
[routerLink]="['/settings']" <- works
[routerLink]="['/settings/user']" <- works
Это похоже на глобальную проблему. Я могу ориентироваться только на этом уровне. Любая идея, как я могу обойти это?
Мои маршруты переданы в 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:
Поскольку данная ссылка в комментариях больше не работает, я предлагаю временное исправление. Ошибка все еще существует в версии alpha.7 версии маршрутизатора, но будет исправлена здесь
Проблема заключается в файле router.js, функция GuardChecks.prototype.runCanDeactivate строка 309 (в роутере v.alpha.7):
var canDeactivate = curr._routeConfig ? curr._routeConfig.canDeactivate : null;
измените его на:
var canDeactivate = curr && curr._routeConfig ? curr._routeConfig.canDeactivate : null;
Пожалуйста, помните, что это следует рассматривать как временное исправление, не подходящее для автоматизированной производственной среды!