2016-04-14 21 views
4

角度2のルータリンクを介してオブジェクトを送信しようとしています。 私の人物のすべての人物オブジェクトのperson-profileコンポーネントを作成し、それらは私の画面上にあります。角2 - ルーターリンクを介してあるコンポーネントから別のコンポーネントにオブジェクトを送信

<div *ngFor="#person of people; #i = index"> 
    <person-profile [person]="person"></person-profile> 
</div> 

person-profileコンポーネントは、personオブジェクトに含まれるいくつかの情報を表示します。私は、person-profileコンポーネントからperson-object全体をrouter-linkを使って "map"という名前のコンポーネントに送り、personオブジェクトをパラメータとして渡そうとしています。私マップコンポーネントで

<person-profile> 
    ..code.. 
    <tr> 
     <td class="category">Address</td> 
     <td>{{ person.visiting_address }}</td> 
     <td *ngIf="person.visiting_address"><a [routerLink]="['Map',{person:person}]">View on map</a></td> 
    </tr> 
..code.. 
<person-profile> 

私はオブジェクトを取得すると:

var person = <any> routeParams.get('person'); 

問題は、私は関係なく、私からルータリンクを実行している<person-profile>のマップコンポーネントに同じ人を毎回取得するということです。その人はいつも人リストの最初の人です。奇妙なことは、personオブジェクトから特定のパラメータを渡すと動作するということです。例えば、人物オブジェクト全体の代わりにperson.family_nameを渡すと、すべてが動作しますが、オブジェクト全体を送信したいとします。助言がありますか?

ありがとうございます!

答えて

10

AFAIKオブジェクトを渡す方法はありません。RouterLinkクラスのソースは、それをサポートしていないし、URL文字列にデータを表示する必要があるためです。

IDを渡して、具体的なインスタンスをIDで取得できるサービス内のユーザーを共有することをお勧めします。

+0

よく説明しています。ありがとう、あなたの時間を感謝します! –

関連する問題