2017-01-07 12 views
0

私はangular2とui-router(https://ui-router.github.io/docs/latest/modules/ng2.html)を使用しています。 私はstateScriptを使用して、typecriptコード内のある状態から別の状態に移動します。 新しいコンポーネントにパラメータを渡すにはどうすればよいですか?ここで 呼び出し側コンポーネントのいくつかのコード:ここAngular2 ui-routerのパラメータ

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つのプロパティを持っているということですヌル値。何が問題ですか?

答えて

2

オブジェクトは、移行が完了した後にまで更新されません。代わりに現在の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() { 
    } 
} 
+0

ありがとうございましたChris T :) – user2957271

関連する問題