2016-10-25 2 views
1

Я мигрирую мое приложение от Angular2 RC3 к угловому (2.0.0) Final Version.I имеет код в RC3 как этоткак передать объекты данных между маршрутами в угловом 2 Final версии

constructor(public router:Router, public routeData: RouteData){ 
    this.routeData.data = { idNum: this.idNumber, message: myMessage }; 
    this.router.navigate(['ActivityList']); 

} 

В текущая версия RouteData была устарела и заменена ActivatedRoute. Может кто-нибудь, пожалуйста, помогите мне, как передать эти объекты через ActivatedRoute.

+0

Это idNum и сообщение отображается в вашем URL или нет? – KwintenP

+1

Нет, они не видны. Если мы используем routeParams, то он будет отображаться в URL-адресе, но проблема с Params заключается в том, что он принимает только строки, а не объекты. – Pavan

+0

Одна вещь, которую вы могли бы сделать, это использовать распознаватель. Резольверы довольно подробно описаны здесь: http://blog.thoughtram.io/angular/2016/10/10/resolving-route-data-in-angular-2.html. Это не передает данные напрямую, но вы можете их где-то сохранить и извлечь из решения. Не нашли способ напрямую передать его, как описано выше, в RC3 – KwintenP

ответ

2

Вы можете попробовать JSON.stringify (your_object):

import {Component} from "@angular/core"; 
import {Router, NavigationExtras} from "@angular/router"; 
@Component({..}) 
export class AppComponent { 
    constructor(router:Router) { 
     this.router = router; 
    } 

    let navextras: NavigationExtras={    
      queryParams:{"message":JSON.stringify({"id": "1", "text":"yourmessages"})} 
     }; 
    sendStringParam() { 

     this.router.navigate([ 'Message'], navextras); 
     return false; 
    } 
} 

от компонента, получающего данные:

import { ActivatedRoute } from '@angular/router'; 
import {Component} from "@angular/core"; 
@Component({.....}) 
export class ReceiverComponent { 
    public message:any; 
    constructor(route: ActivatedRoute) { 
     this.route.queryParams.subscribe(params => { 
     this.message = params["message"]; 
     console.log(this.message.id); 
     console.log(this.message.text); 
     }); 

    } 

} 
+0

В 'ReceiverComponent' вы должны использовать' JSON.parse (this.message) ', not? – developer033