Angular2 v3组件路由器:TypeError: Cannot read property 'split&
Angular2 v3 component router: TypeError: Cannot read property 'split' of undefined
我最近把我的angular2应用程序从RC路由器切换到v3路由器。我得到错误
TypeError: Cannot read property 'split' of undefined
at match`.
在路由器上启用跟踪以获得调试输出后,看起来错误的来源来自路由器:
NavigationError {id: 2, url: "/my/workspace/1252407935628215305/projects", error: TypeError: Cannot read property 'split' of undefined
at match - common_router_providers.js:28 NavigationError {id: 2, url: "/my/workspace/1252407935628215305/projects", error: TypeError: Cannot read property 'split' of undefined
at match (http://localhost:8080/vendor.6a9d…}error: TypeError: Cannot read property 'split' of undefined
at match (http://localhost:8080/vendor.6a9dd9122cbbc98aa93a.js:74100:22)
at matchPathsWithParamsAgainstRoute (http://localhost:8080/vendor.6a9dd9122cbbc98aa93a.js:74073:19)
at expandPathsWithParamsAgainstRoute (http://localhost:8080/vendor.6a9dd9122cbbc98aa93a.js:74038:17)
at expandPathsWithParams (http://localhost:8080/vendor.6a9dd9122cbbc98aa93a.js:74020:21)
at matchPathsWithParamsAgainstRoute (http://localhost:8080/vendor.6a9dd9122cbbc98aa93a.js:74085:23)
at expandPathsWithParamsAgainstRoute (http://localhost:8080/vendor.6a9dd9122cbbc98aa93a.js:74038:17)
at expandPathsWithParams (http://localhost:8080/vendor.6a9dd9122cbbc98aa93a.js:74020:21)
at expandSegment (http://localhost:8080/vendor.6a9dd9122cbbc98aa93a.js:74010:17)
at http://localhost:8080/vendor.6a9dd9122cbbc98aa93a.js:74014:84
at http://localhost:8080/vendor.6a9dd9122cbbc98aa93a.js:74367:41message: "Cannot read property 'split' of undefined"stack: (...)get stack: stack()set stack: stack()__proto__: Errorid: 2url: "/my/workspace/1252407935628215305/projects"__proto__: Object
这是我的路由器配置设置:
export const routes: RouterConfig = [
...MyAppRoutes,
{ path: 'login', component: LoginComponent},
{ path: 'signup', component: SignUpComponent},
{ path: 'join', component: JoinComponent},
{ path: 'version', component: VersionComponent},
{ path: '', redirectTo: 'login', terminal: true},
];
export const APP_ROUTER_PROVIDERS = [
provideRouter(routes, {enableTracing: true})
];
MyAppRoutes:
export const MyAppRoutes: RouterConfig = [
{ path: 'my',
component: MyAppComponent,
children: [
{path: 'dashboard', component: DashboardComponent},
{path: 'profile', component: EditProfileComponent},
{path: 'password', component: ChangePasswordComponent},
{path: '', redirectTo: 'dashboard', terminal: true},
...WorkspaceRoutes,
]
},
];
WorkspaceRoutes
export const WorkspaceRoutes: RouterConfig = [
{path: 'workspace/:id', component: WorkspaceRootComponent},
{children: [
{path: 'projects', component: WorkspaceDashboardComponent},
{path: 'newproject', component: ProjectNewComponent},
{path: '', redirectTo: 'projects', terminal: true},
]}
];
路由在前两层(应用路由和MyAppRoutes)运行良好。但是,尝试导航到任何路线,如/my/workspace/1234/projects
,都会失败,并出现上述错误。同样的设置也适用于Angular2 beta和v2路由器。
我明白是怎么回事了。如果其他人遇到类似的问题,在这种情况下的问题是在WorkspaceRoutes。
export const WorkspaceRoutes: RouterConfig = [
{path: 'workspace/:id', component: WorkspaceRootComponent},
{children: [ // this should not be the start of a new object
{path: 'projects', component: WorkspaceDashboardComponent},
{path: 'newproject', component: ProjectNewComponent},
{path: '', redirectTo: 'projects', terminal: true},
]}
];
应该export const WorkspaceRoutes: RouterConfig = [
{path: 'workspace/:id',
component: WorkspaceRootComponent,
children: [
{path: 'projects', component: WorkspaceDashboardComponent},
{path: 'newproject', component: ProjectNewComponent},
{path: '', redirectTo: 'projects', terminal: true},
]}
];
WorkspaceRootComponent的子项不在该项之下,而是在同一层上。
相关文章:
- $(this).prop('property') vs. this.property
- str.split(someString).join(someOtherString)是否等效于替换
- 如何使用split()将1.18.0-AAA-1转换为1.18.0js
- 为什么JavaScript可以'找不到给定的InnerHTML并返回Cannot set property
- how to split a string with ','
- 在javascript中使用split函数希望在页面加载时拆分url
- jQuery字符串使用split()方法在空格后拆分字符串
- 如何使用 num.toString 和 str.split 查找整数的最后一位数字
- 具有多个条件的Javascript.split()函数
- 如何在javascript中对以下字符串使用string.split()
- Jquery Dynamic property
- Javascript-具有Split功能的数组
- Javascript:不使用.split()方法拆分字符串
- .split() 数据属性在应该工作的时候不起作用
- 为什么“如果( !Object.property)“,如果 Object 未定义,则中断
- split(' ') 函数没有给出正确的结果 Javascript
- 未捕获的TypeError: Cannot read property 'split'未定义的
- TypeError: Cannot read property 'split'在Nodejs中未定义
- Angularjs -不能读取property 'split'的定义
- Angular2 v3组件路由器:TypeError: Cannot read property 'split&