在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');
}
但我收到错误:
答案 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
返回旧数据,尽管您将新数据放入路径中。