Angular 2 - 通过路由器链接将对象从一个组件发送到另一个组件

时间:2016-04-14 09:07:01

标签: angular angular2-routing

我试图通过角度2中的路由器链接发送对象。 我为我的人阵列中的每个人对象创建一个人物配置文件组件,并将其显示在我的屏幕上。

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

person-profile组件显示person对象中包含的几条信息。我试图将整个person对象从person-profile组件发送到名为&#34; map&#34;使用路由器链接并将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而不是整个person对象,一切正常,但我想发送整个对象。有什么建议吗?

谢谢!

1 个答案:

答案 0 :(得分:10)

AFAIK无法传递对象,因为RouterLink类的源不表示对此有任何支持,因为数据需要在URL字符串中显示。

我的建议是传递一个ID并在允许按ID获取具体实例的服务中共享用户。