Bau*_*umi 10 angular2-routing angular
我正在使用新的Router v3.0.0-alpha.3.想象一下我的路线如下:
App
/\
/ \
Settings Main
/ \
/ \
User Account
Run Code Online (Sandbox Code Playgroud)
从用户组件的角度来看,我想导航到主要组件.如果我导航到设置级别中的任何组件它工作正常,但当我尝试导航到其他级别时,我收到一个错误:
EXCEPTION: Error: Uncaught (in promise): TypeError: Cannot read property '_routeConfig' of null
Run Code Online (Sandbox Code Playgroud)
我使用routerLink指令naviagate:
[routerLink]="['/main']" <- doesn't work
[routerLink]="['/settings']" <- works
[routerLink]="['/settings/user']" <- works
Run Code Online (Sandbox Code Playgroud)
这似乎是一个全球性问题.我只能在同一级别内导航.任何想法我怎么能绕过它?
我的路由传递给bootstrap:
export const routes: RouterConfig = [
...MainRoutes,
...SettingsRoutes
];
export const APP_ROUTER_PROVIDERS = [
provideRouter(routes)
];
Run Code Online (Sandbox Code Playgroud)
main.routes.ts:
export const MainRoutes: RouterConfig = [{
path: '/main',
component: SettingsComponent
}];
Run Code Online (Sandbox Code Playgroud)
settings.routes.ts:
export const SettingsRoutes: RouterConfig = [{
path: '/settings',
component: SettingsComponent,
children: [{
path: '/user',
component: UserSettingsComponent,
index: true
}]
}];
Run Code Online (Sandbox Code Playgroud)
编辑:
由于评论中给定的链接不再起作用,我将建议临时修复.该bug仍存在于alpha.7版本的路由器中,但将在此处修复
问题出在router.js文件中,函数GuardChecks.prototype.runCanDeactivate第309行(在路由器v.alpha.7中):
var canDeactivate = curr._routeConfig ? curr._routeConfig.canDeactivate : null;
Run Code Online (Sandbox Code Playgroud)
将其更改为:
var canDeactivate = curr && curr._routeConfig ? curr._routeConfig.canDeactivate : null;
Run Code Online (Sandbox Code Playgroud)
请记住,这应该被视为临时修复,不适合自动化生产环境!
更新:已修复alpha.8
在发布新@angular/router版本之前,您需要手动更新源代码,如下所述:
https://github.com/angular/angular/issues/9480#issuecomment-227845866
| 归档时间: |
|
| 查看次数: |
1859 次 |
| 最近记录: |