2017-02-04 4 views
1

Wie ein JSON-Objekt von einer Komponente zu einer anderen während des Routing übergeben.Pass Json Daten Winkel2 Routing

Ich denke, es kann mit dem Dienst erreicht werden, aber ich möchte wissen, ob es mit Routing selbst getan werden kann.

Die Dateneigenschaft wie unterhalb dessen zur Verfügung, während die Definition der Strecke kann hilfreich sein, aber ich muss die Daten von Komponentencode übergeben, ich meine nicht statischen Daten

{ 
    path: 'heroes', 
    component: HeroListComponent, 
    data: { title: 'Heroes List' } 
    } 

Dank

Antwort

0

Es kann aber Sie müssen JSON.stringify verwenden und das Objekt in Routenparameter konvertieren und als Teil der Route übergeben.

+0

tun dies wird sie in URL sichtbar machen. Recht ? Solange die Parameter sind wenige, es ist in Ordnung, aber in meinem Fall möchte ich nicht in URL sichtbar –

+0

Richtig, sie werden in der URL sichtbar sein. Der Dienst ist Ihre einzige andere Option mit einer Art von Modell, das Zustände zwischen Komponenten speichern kann. –

0

Wie bereits in einer anderen Antwort erwähnt, ist es nicht möglich, ein Objekt über das Routing zu übergeben, ohne dass das Objekt mit einem String versehen wird. Das bedeutet, dass das Objekt in der URL sichtbar wäre. Eine Möglichkeit, die Verwendung eines Dienstes zu vermeiden, und dass Ihr Objekt in URL sichtbar wäre, ist Ihr localStorage. Bevor Routing Sie das Objekt in localStorage und nach Routing gesetzt würde holen das Objekt aus dem localStorage, so zunächst etwas wie folgt aus:

localStorage.setItem('myObject', JSON.stringify(theObject)); 

Dann würde ich eine Funktion im Service machen für immer das Produkt nach dem Routing:

getMyObject() { 
    return JSON.parse.getItem('myObject'); 
} 

Und nach Navigation rufen Sie diese Funktion:

this.myObject = this.myService.getMyObject(); 

Hoffnung, dies für Sie eine praktikable Lösung ist! :)

+0

Das Objekt ist immer noch sichtbar, aber in der Konsole gibt es einen anderen Weg? – Diego