通过路由angular2传递RouteParams的对象/数组

时间:2015-12-23 09:54:16

标签: angular

在angular2中处理路由。实际上我知道我们可以在路由中使用RouteParams发送键/值,但我想在RouteParams中发送整个对象/数组,我不知道是否可能。有没有办法这样做,如果不是那么任何替代谁知道?

我目前的HTML部分是:

<div *ngFor="#books of getBooks_array #i=index">
    <a [routerLink]="['/IssueBook', {name: books.book_name, isbn: books.book_ISBN,author: books.book_author, price: books.book_price, id: books.book_id, language: books.book_language}]"></a>
</div>

我现在的.ts conatins:

constructor(@Inject(RouteParams) params:RouteParams, @Inject(Http) http:Http){
        this.name= params.get('name');
        this.id= params.get('id');
        this.language= params.get("language");
        this.price= params.get("price");
        this.author= params.get("price");
        this.isbn= params.get("isbn");
}

但我想发送像这样的RouteParams:

<div *ngFor="#books of getBooks_array #i=index">
<a [routerLink]="['/IssueBook', {data: books}]">Books</a>
</div>

我试图获得这样的数据:

constructor(@Inject(RouteParams) params:RouteParams, @Inject(Http) http:Http){
        this.data= params.get('data');
}

但我收到错误:

enter image description here

1 个答案:

答案 0 :(得分:2)

您可以将对象传递给Angular2中的Url,但它并不真正受支持。 routeParams上的get-Method只返回一个字符串表示,因此你会得到一个像&#34; [Object]&#34;这样的字符串。 如果要访问传递的数据,则需要使用params-Property:

constructor(@Inject(RouteParams) params:RouteParams, @Inject(Http) http:Http){
    this.data= params.params.data;
}

但要注意,这只有在您第一次呼叫路线时才能正常工作。 如果您使用不同的数据调用路径,则可能会发生params.params.data返回旧数据,尽管您将新数据放入路径中。