首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Angular2 v3组件路由器: TypeError:无法读取未定义的属性“拆分”

Angular2 v3组件路由器: TypeError:无法读取未定义的属性“拆分”
EN

Stack Overflow用户
提问于 2016-06-27 20:56:52
回答 1查看 8.9K关注 0票数 1

我最近将我的angular2应用程序从RC路由器切换到了v3路由器。我搞错了

代码语言:javascript
复制
TypeError: Cannot read property 'split' of undefined
    at match`. 

启用路由器上的跟踪以获得调试输出后,错误的来源似乎来自路由器:

代码语言:javascript
复制
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

这是我的路由器配置设置:

代码语言:javascript
复制
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:

代码语言:javascript
复制
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

代码语言:javascript
复制
export const WorkspaceRoutes: RouterConfig = [
  {path: 'workspace/:id', component: WorkspaceRootComponent},
  {children: [
    {path: 'projects', component: WorkspaceDashboardComponent},
    {path: 'newproject', component: ProjectNewComponent},
    {path: '', redirectTo: 'projects', terminal: true},
  ]}
];

路由在前两个级别(app路由和MyAppRoutes)运行良好。但是,尝试导航到任何路由(如/my/workspace/1234/projects )都失败了,出现了上述错误。同样的设置也适用于Angular2 beta和v2路由器。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-28 14:35:18

我搞清楚了到底发生了什么。如果其他人遇到类似的问题,本例中的问题是在WorkspaceRoutes中。

代码语言:javascript
复制
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},
  ]}
];

应该是

代码语言:javascript
复制
export const WorkspaceRoutes: RouterConfig = [
  {path: 'workspace/:id', 
  component: WorkspaceRootComponent,
  children: [
    {path: 'projects', component: WorkspaceDashboardComponent},
    {path: 'newproject', component: ProjectNewComponent},
    {path: '', redirectTo: 'projects', terminal: true},
  ]}
];

WorkspaceRootComponent的子项不是在该项下,而是在同一级别上。

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38063098

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档