2017-06-28 9 views
0

私はこのオブジェクトを別のコンポーネント(オブジェクトオブジェクト)に展開しようとするとurlのオプションパラメータとしてこのオブジェクトを渡していますが、JSONを試してみました.Stringfyでも抽出することはできません。あなたのURLから角度2のオプションパラメータからデータを抽出する方法は?

user has {"id":5,"name":"Chelsey Dietrich","username":"Kamren","email":"[email protected]","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

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

router.navigateは()文字列がパラメータのために渡されることを想定します。実際のオブジェクトの代わりに[object Object]があなたのURLに渡されているのを見ることができます。これは、(オブジェクト).toString()が[オブジェクトオブジェクト]を生成するためです。それを渡す前に、オブジェクトを文字列化してみてください。あなたのサブスクリプションでそれを解析する必要があります

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

は文字列化されたオブジェクトを使用する

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

私はこれを試してみました上記のコード*用*仕事をしました私。ここでstringifyが必要です。 (あなたはあなたの記事であなたがそれを試したと言いましたが、これは*私のために働いています) – DeborahK

+0

これはURL内のオブジェクトを隠すことは可能ですか? –

+0

@BalaganapathyNTは必ずしも非表示にはなりません。あなたはそれを私が想像することができます。別の方法(その変数を複数のセッションを通して持続させる)は、ユーザーオブジェクトをlocalStorage内に格納することです。 – LLai

関連する問題