2017-06-30 6 views
5

Vielleicht fehlt mir etwas ??Angular 2 Activated Route

In einer Angular 2-Komponente versuche ich einfach, die volle aktivierte Route zu bekommen.

Ich möchte nicht location.href verwenden.

mein Konstruktor ist wie folgt:

constructor(private route: ActivatedRoute) {} 

Und in ngOnInit() Ich habe versucht:

this.route.data.url 

this.route.snapshot 

Weder Arbeit.

Jede Hilfe überhaupt sehr geschätzt.

+0

'this.route.url'. – developer033

+0

also würde ich annehmen, ich muss das Array analysieren und die URL mit diesem neu erstellen? Ich hatte gehofft, dass die URL irgendwo in den Routerdaten als String existierte. –

+0

@MikeSomeone überprüfen Sie meine Antwort unten, hoffe es hilft :) –

Antwort

7

Sie brauchen nicht ActivatedRoute dafür zu verwenden, müssen Sie Router abfragen für die aktuelle URL in Form von String verwenden:

constructor(r: Router) { 
    console.log(r.url); 
} 
+0

DANKE, diese und Hameds Antworten funktionieren. Gibt es hier eine Best Practice? –

+0

@MikeSomeone, würde ich für meinen Ansatz natürlich argumentieren, wie dies Standard-API für den Router –

+0

vereinbart ist, und es erfordert nicht den Aufruf der Methode path(). –

3

Eine einfachere Lösung ist die Verwendung der LocationStrategy-Klasse aus dem @angular/common zum Darstellen und Lesen des Routenstatus direkt aus der URL des Browsers, die bequemer ist als this.router.url, wenn der Router-URL in Form einer Zeichenfolge abgerufen werden soll.

import {LocationStrategy} from '@angular/common'; 


export class MyComponent implements OnInit { 

    constructor(private url:LocationStrategy) { } 

    ngOnInit() { 
      //this will log the current url 
     console.log(this.url.path()); 
    } 

} 
+0

DANKE, sowohl diese und Maximus Antworten funktionieren. Gibt es hier eine Best Practice? –

+0

froh das hat geholfen! Aber ich glaube nicht, dass es hier eine Best Practice gibt, aber es gibt Optionen und hier ist noch eine: Sie können 'RouterStateSnapshot' aus' @ angular/router' 'Konstruktor (state: RouterStateSnapshot)' injizieren und es so benutzen ' let url: string = state.url; 'und übrigens wird diese Methode in der offiziellen Dokumentation Router Guide verwendet. –

+1

@HamedBaatour, dies wird nur ein URL-Segment anzeigen, wie aktivierte Route –