我使用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总是有一个名为"#"具有空值。有什么问题?
答案 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() {
}
}