在 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');
}

但我收到错误:

angular - 通过 Routing angular2 传入 RouteParams 的对象/数组-LMLPHP

最佳答案

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

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

但请注意,这仅在您第一次调用路由时才能正常工作。
如果您再次使用不同的数据调用路由,尽管您将新数据放入路由,但 params.params.data 可能会返回旧数据。

关于angular - 通过 Routing angular2 传入 RouteParams 的对象/数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34432886/

10-11 14:24