2017-02-04 12 views
1

ルーティング中にあるコンポーネントから別のコンポーネントにjsonオブジェクトを渡す方法。json data angular2 routingを渡す

私はサービスを使って実現できると思いますが、ルーティング自体を使って行うことができるかどうかを知りたいのですが。

データ性経路を画定する役立つことができるが利用可能であり、それ以下のように、私は、コンポーネントコードからデータを渡す必要があり、私は静的なデータではない意味

{ 
    path: 'heroes', 
    component: HeroListComponent, 
    data: { title: 'Heroes List' } 
    } 

おかげ

答えて

0

それはできるが、 JSON.stringifyを使用してオブジェクトを変換してパラメータを経路指定し、それらを経路の一部として渡す必要があります。

+0

これを行うと、URLに表示されます。右 ?パラメータが少ない間は問題ありませんが、私の場合はURLに表示したくありません。 –

+0

URLにURLが表示されます。このサービスは、コンポーネント間で状態を保存できる何らかの種類のモデルを持つ唯一の他のオプションです。 –

0

すでに他の答えで言及したように、オブジェクトが文字列化されていないルーティングでオブジェクトを渡すことはできません。つまり、オブジェクトがURLに表示されます。サービスの使用を避けるための1つの方法は、オブジェクトがURLに表示されることです。localStorageです。ルーティングする前に、あなたはlocalStorageにオブジェクトを設定し、localStorageからオブジェクトをフェッチルーティングした後なので、このような最初のものになります。

localStorage.setItem('myObject', JSON.stringify(theObject)); 

その後、私は、ルーティングの後にアイテムを取得するためのサービスで機能するようになります。

getMyObject() { 
    return JSON.parse.getItem('myObject'); 
} 

とナビゲーションの後、ちょうどその関数を呼び出す:

this.myObject = this.myService.getMyObject(); 

希望これはあなたのための実行可能なソリューションです! :)

+0

オブジェクトはまだ表示されていますが、コンソールには別の方法がありますか? – Diego