组件“CompnentName”没有路由配置

时间:2016-04-30 13:34:36

标签: angular angular-ui-router angular2-routing

我在angular2中遇到了一些问题 我想在我的服务中制作嵌套路线,但我被卡住了。

@Component({
  selector : "app",
  directives : [ROUTER_DIRECTIVES],
  template : `
    <router-outlet></router-outlet>
  `
})

@RouteConfig([
  {path: "/**", redirectTo: ['/User', {userId:0}, 'Main']},
  {path: "/users/:userId/...", component: User, name: "User", useAsDefault:true},
  {path: "/main", component: Main, name: "Main"}
])

这是app.ts中的代码,它引导了应用程序。
以下是user.ts包含用户组件。

@Component({
  selector : "user",
  directives : [ROUTER_DIRECTIVES, NavBar, UserInfo, Main, Feeds, Notebook],
  template : `
  <div class="dotebook-main">
      <nav-bar></nav-bar>
      <div class="dotebook-view">
        <div class="dotebook-body">
          <router-outlet></router-outlet>
        </div>
        <div class="dotebook-user">
          <user-info [user]="user"></user-info>
        </div>
      </div>
    </div>
  `
})

export class User{
  constructor(){
  }
}

@RouteConfig([
  {path: "/", redirectTo : ['Main']},
  {path: "/main", component: Main, name: 'Main', useAsDefault: true},
  {path: "/feeds", component: Feeds, name: "Feeds"},
  {path: "/notebook/:notebookId", component: Notebook, name: "Notebook"}
])

我想让'/ user /:userId'一直是root用户,
我想'/ user /:userId / main'是默认页面。

用户组件应该有子路径,如
'/ user /:userId / main'或'/ user /:userId / feeds'等。

所以我在app.ts.的用户组件网址的末尾添加了“/ ...”。

但此时我遇到了问题。

我认为路由“Main”应该在User Component中完成,但是,
让用户第一次去“users /:userId / main”,
我需要在app.ts routeConfig中使用“redirectTo”。

我得到组件“用户”没有路由配置错误。

我认为这违反了我制作的网址层次结构 但我无法猜测解决方案是什么。

有没有人遇到类似的问题?
帮助!
提前谢谢!

1 个答案:

答案 0 :(得分:2)

@RouteConfig(..)注释必须高于类声明。像这样:

@Component({
  selector : "user",
  ...
})
@RouteConfig([
  {path: "/", redirectTo : ['Main']},
  {path: "/main", component: Main, name: 'Main', useAsDefault: true},
  {path: "/feeds", component: Feeds, name: "Feeds"},
  {path: "/notebook/:notebookId", component: Notebook, name: "Notebook"}
])
export class User{
  constructor(){
  }
}