Angular2 Router v3,导航到不同的级别 : TypeError: Cannot read property '_routeConfig' of null

标签 angular angular2-routing

我正在使用新的路由器 v3.0.0-alpha.3。想象一下我的路线是这样的:

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

从用户组件的 Angular 来看,我想导航到主组件。如果我导航到设置级别中的任何组件,它工作正常,但当我尝试导航到其他级别时,我收到错误:

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

这似乎是一个全局性问题。我只能在同一级别内导航。知道如何绕过它吗?

我的路由传递给 bootstrap:

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

export const APP_ROUTER_PROVIDERS = [
    provideRouter(routes)
];

ma​​in.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
    }]
}];

编辑:

由于评论中的给定链接不再有效,我会建议临时修复。该错误仍然存​​在于 alpha.7 版本的路由器中,但将得到修复 here

问题出在 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;

请记住,这应该被视为临时修复,不适合自动化生产环境!

最佳答案

更新:修复在 alpha.8


在发布新的 @angular/router 之前,您需要手动更新源代码,如下所述:

https://github.com/angular/angular/issues/9480#issuecomment-227845866

关于Angular2 Router v3,导航到不同的级别 : TypeError: Cannot read property '_routeConfig' of null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37890620/

相关文章:

javascript - 转到 Angular 2 中的父路由

javascript - 我想在我的应用程序中使用ng2-charts。尽管我已正确导入它,但仍然给我一个错误。找不到模块“ng2-charts/ng2-charts”

angular - 以编程方式设置 p-tableCheckbox

angular - 具有 Angular 2 重新加载问题的 Electron App

Angular 2路由: Route guard validation fails when accessing the protected url directly

angular - 如何将值从一个组件发送到另一个组件?

ngFor 多上下文中的 Angular 6 ngTemplateOutlet

angular2-routing - Uncaught Error : Module build failed: Error: No PostCSS Config found in:\ng2-admin\node_modules\bootstrap-loader at Error (native)

Angular2 路由器链接不工作

javascript - Angular 6 - 路由未发生 - Mat-table 行