如何从角度2中的可选参数中提取数据?

时间:2017-06-28 13:45:11

标签: angular typescript angular2-routing

我有包含用户详细信息的对象(例如姓名,电子邮件等)我在url中传递此对象作为可选参数当我尝试在另一个组件中提取此obj时它显示[对象对象]即使我尝试过JSON.Stringfy但无法提取。

user has {"id":5,"name":"Chelsey Dietrich","username":"Kamren","email":"Lucio_Hettinger@annie.ca","address":{"street":"Skiles Walks","suite":"Suite 351","city":"Roscoeview","zipcode":"33263","geo":{"lat":"-31.8129","lng":"62.5342"}},"phone":"(254)954-1289","website":"demarco.info","company":{"name":"Keebler LLC","catchPhrase":"User-centric fault-tolerant solution","bs":"revolutionize end-to-end systems"}}
 passID(user){
    console.log(JSON.stringify(user));
    this._router.navigate(['/detail', user.id, {user}]);
  }

接收方部分(明细组成部分)

 this._ActiveRoute.params.subscribe((params:Params) => {
                let id = parseInt(params['id']);
                this.userID = id;//success

                let output = params['user'];
               console.log(output)// cant able to extract object([object object])

Browser URL - http://localhost:4200/detail/5;user=%5Bobject%20Object%5D

1 个答案:

答案 0 :(得分:1)

来自您的网址

http://localhost:4200/detail/5;user=%5Bobject%20Object%5D

router.navigate()希望为参数传入字符串。你可以看到[object Object]被传递到你的url而不是实际的对象。这是因为(object).toString()生成[object Object]。尝试在传递对象之前对其进行字符串化。

this._router.navigate(['/detail', user.id, {user: JSON.stringify(user)}]);

使用您需要在订阅中解析它的字符串化对象

// output equals the object you passed in
let output = JSON.parse(params['user']);