2017-11-03 5 views
0

navigieren Ich habe zwei separate Controller. Wenn ich auf einen bestimmten Link von einem Controller klicke, möchte ich zu einem bestimmten Anker-Tag in dem anderen umleiten.Kann nicht zu bestimmten Anker in Angular 4 Route

Ich versuche, dies zu tun, indem ich das Anchor-Tag als AbfrageParam an den Router übergeben.

Wenn ich jedoch versuche, es in der Zielkomponente abzurufen, ist der Parameter nicht definiert.

Hier ist, was ich in meinem Source-Komponente so mache:

this.router.navigate(['home',{ 
queryParams: {anchor: 'about'}}]) 

Und hier ist, wie ich versuche, den Parameter in der Zielkomponente abzurufen:

this.anchor = this.route.queryParams['anchor'] 

Aber es ist immer undefiniert.

Die Umleitung funktioniert sowieso, aber natürlich kann ich nicht zum spezifischen Anker gehen.

+1

Sollten Sie nicht sein * Anmeldung * auf die Abfrage beobachtbaren params? Bitte geben Sie ein [MCVE]. – jonrsharpe

Antwort

0

Bitte werfen Sie einen Blick auf diese: https://angular.io/guide/router#activated-route

Sie sollten queryParamMap verwenden, die eine beobachtbare ist. Sie müssen es abonnieren, idealerweise in der ngOnInit-Methode, und den Wert für Ihr queryParam dort abrufen.

Wie in dem Link, auf den ich verwiesen habe, erwähnt, wird von der Verwendung von queryParams abgeraten. Außerdem verwendest du es in keinem Fall richtig. Es ist ein Observable, das abonniert werden muss, nicht ein Array.

Hier ist ein Beispiel

ngOnInit() { 
    this.route.queryParamMap.subscribe(queryParams => { 
     this.anchor = queryParams['anchor']; 
    }); 
    } 
Verwandte Themen