2016-05-06 10 views
4

In Angular 2 möchte ich in der Lage sein, route.path zu verwenden, um den Pfad zu erhalten.Angular 2 Route erhalten Kein Anbieter für Route

Innerhalb einer Komponente-Konstruktor Ich habe:

constructor(private route: Route) {} 

So würde ich anrufen können, wie:

this.route.path 

Und für die App Bootstrap Ich habe:

bootstrap(AppComponent, 
[ 
    ROUTER_PROVIDERS, 
]); 

Aber ich bekomme immer noch die Kein Provider für Route! Fehler

+0

Wenn Sie außerhalb des Konstruktors verwenden, versuchen Sie es einfach einmal Modifikator in Contructor zu ändern – mayur

Antwort

4

Ich gehe davon aus, was Sie Location statt Route zu injizieren. Route ist für die Routenkonfiguration und Angular kann nicht wissen, welche Route Instanz injiziert werden soll.

Location bietet die path() Funktion, um die aktuelle URL zu erhalten.

Abhängig von der Angular2-Version gibt es verschiedene Pfade, aus denen importiert werden kann.

Siehe auch Location and HashLocationStrategy stopped working in beta.16

< = Beta 15

import {Location} from 'angular2/router'; 

> = Beta 16 < rc.0

import {Location} from 'angular2/platform/common'; 
constructor(private location:Location) { 
    console.log(location.path()); 
} 

> = rc.0

import {Location} from '@angular/common'; 
+0

Sie setzen mich auf den richtigen Pfad, es muss 'Import {Location} von '@ Angular/common' sein; 'seit 2.0.0-rc.0 Wenn Sie das hinzufügen, werde ich akzeptieren :) – RobSeg

+0

Richtig, vergessen, dass es wieder geändert –

0

Die Route Klasse injiziert werden kann. Sie können die Router ein oder RouteParams injizieren:

constructor(private router:Router,private params:RouteParams) { 
    this.id = params.get('id'); 
} 

Wenn Sie den Pfad der aktuellen Route benötigen, injizieren eher die Location Klasse und verwenden seine path Methode

constructor(private location:Location) { 
    var path = location.path(); 
} 
+0

Woher importieren Sie RouteParams post beta (rc.1). Es funktioniert nicht, es von @ angular/router zu importieren und ich finde nirgends wo es das sagt. – mottosson

0

statt mit ROUTER_BINDINGS Versuchen.

+1

ROUTER_BINDINGS ist veraltet (verwenden Sie stattdessen ROUTER_PROVIDERS) seit alpha41 – RobSeg

+0

zu kurz für die Antwort, Sie können dies auch als Kommentar verwenden. –

Verwandte Themen