Angular2 ui-router中的参数

时间:2017-01-07 10:21:43

标签: angular parameters angular-ui-router

我使用angular2和ui-router(https://ui-router.github.io/docs/latest/modules/ng2.html)。 我使用stateService来在typescript代码中从一个状态移动到另一个状态。 如何在新组件中传递参数? 这里是调用者组件的一些代码:

private editUser(user: User): void {
    this.uiRouter.stateService.go("home.userEdit", { userToEdit: user }, null);
}

这里是被调用组件的代码:

constructor(private uiRouter: UIRouter, private usersService: UsersService) {
    if (uiRouter.globals.params != null) {
        //this.user = user;
    }
}

问题是uiRouter.globals.params总是有一个名为"#"具有空值。有什么问题?

1 个答案:

答案 0 :(得分:2)

转换完成后globals对象才会更新。注入当前的Transition object并询问其参数。

constructor(private trans: Transition, private usersService: UsersService) {
    var params = trans.params();

}

注意:您还可以在呈现组件之前使用resolve来提取您的用户

var state = {
  name: 'user',
  component: UserComponent,
  resolve: [
    { 
      token: 'user', deps: [Transition, UserService], 
      resolveFn: (trans, svc) => 
        svc.getUser(trans.params().userId)
    }
  ]
}

@Component({
 ...
}) 
class UserComponent {
  @Input('user') user: User;
  constructor() {
  }
}