2017-12-11 1 views
1

Ich habe eine Komponente, die eine FormGroup erwartet. Jetzt mit meiner Homepage, was ich versuche zu tun, dass, wenn ich dann einen Knopf klicken, um es eine Funktion aufrufen wird, die dann this.router.navigate(['my-component']);Angular 4: Wie man FormGroup nach Routennavigation übergibt

Jetzt läuft Ich brauche formGroup durch diese passieren, aber ich bin nicht in der Lage, es zu erhalten dass, wie es gemacht werden kann. Ich habe queryParams ausprobiert, aber keinen Erfolg.

Es wäre toll, wenn ich FormGroup an diese my-component Komponente übergeben kann. Beliebige Hilfe

+0

Wie haben Sie Ihren Code mit Abfrageparametern geschrieben? Kannst du es hier anzeigen? –

+0

Übrigens ist die Dateneigenschaft nur für Router-Konfiguration. Wenn Sie komplexe Daten übergeben müssen, verwenden Sie einen gemeinsam genutzten Dienst. Abfrageparameter sollten nur für einen oder zwei Parameter verwendet werden, die nicht versteckt werden sollen. Wenn Ihre Formulardaten gesichert werden sollen, verwenden Sie stattdessen den Shared Service –

Antwort

0

Erstellen Sie eine gemeinsame service mit einer Variablen, die eine behaviorSubject ist.

erstellen set Verfahren und eine get Methode wie folgt:

public set $yourVariable(...data_input){ 
    //your logic 
} 

public get $yourVariable(){ 
    return this.yourVariable.asObservable(); 
} 

in Ihrer Komponente (oder wo Sie Daten benötigen) inject der Service. Fügen Sie eine Variable mit dem Namen isAlive hinzu, die standardmäßig auf "true" gesetzt ist. In NgOnDestroy Methode mit diesem Code:

this.isAlive = false

Dies wird das Abo verhindern, dass Sie schreiben werden, aktiv zu sein, wenn die Komponente nicht istanced wird.

hinzufügen oder Ihre OnInit Methode auf diese Weise ändern:

... 
this.yourService.$yourVariable 
.takeWhile(() => this.isAlive) 
.subscribe(event => { 
    //your logic here 
}); 
... 

Wenn Ihre Komponentendaten erfordert before der Dienst injiziert bekommen, fügen Sie einfach einen .filter Daten zu verhindern zu bekommen zu machen, bevor Sie Ihre Anfrage getan hat.

Verwandte Themen