2016-05-23 23 views
0

In Beta 17 die URL an den Teilnehmer übergeben wurde wie soAngular 2 rc 1 Router Änderungen abonnieren erhält keine Parameter

this.router.subscribe(function(url){ 
     if(typeof url !== "undefined") { 
     if(url.length > 0) { 
      console.log('Handle router changes /' + url); 
     } 
     } 
    }.bind(this)); 

In rc 1 Ich glaube, Sie an den router.changes Emitter abonnieren haben jedoch keine Parameter übergeben? this.router.changes.subscribe (Funktion (URL) { // URL ist immer Null } .bind (this)); Gibt es eine andere Möglichkeit, Routeränderungen in rc1 zu abonnieren

Antwort

1

Ich lief auch in dieses Problem. am Router Code aus sucht das ist, was aus dem router.changes() beobachtbar zurückgegeben:

this._changes.emit(null); 

Mit anderen Worten, .changes() löst ein Ereignis, das Sie die Route es geändert wissen zu lassen, aber nicht geben Sie den Wert, den es nur Null ausgibt, hoffentlich wird dies in zukünftigen Versionen aktualisiert werden. Als Arbeit um für jetzt haben die Art, wie ich es getan ist, um die Veränderungen zu beobachten und dann überprüfen Sie die location.path() erhalten Sie den aktuellen Wert zu abonnieren:

this.router.changes.subscribe(() => this.state = this.location.path()); 
+0

Danke, ich schon, dass tue. Ich muss mit root "/" umgehen und die Standardkomponente laden, weil rc1 keine funktionierende redirectTo-Option zu haben scheint. Ich verstehe nicht, warum sie den URL Baum in dem Fall nicht passieren können, es ist so eine einfache Lösung. Die aktuelle Version des neuen Routers ist sehr frustrierend. – Greg

Verwandte Themen