2017-05-16 3 views
1

Ich habe eine Zurück-Taste in meiner Anwendung, die relativ einige Ebenen zurück navigiert. Im Falle einer EbeneAngular2, relative Navigation (zwei Ebenen zurück ../../)

this.router.navigate(['..'], { relativeTo: this.route }); 

es perfekt funktioniert (resultierten Route url: http://localhost:3000/three/two/one). Bei zwei Ebenen zurück rel. Navigation

this.router.navigate(['..', '..'], { relativeTo: this.route }); 

Router navigiert zwei Ebenen zurück, ABER die resultierende Route url sieht nun wie http://localhost:3000/three/two/ (Tailing Strich, die nicht korrekt ist).

Mache ich etwas falsch oder könnte es ein Fehler sein?

Antwort

1

Bei zwei Ebenen verwenden unten folgt aus:

this.router.navigate(['../../'], { relativeTo: this.route }); 
+0

Es funktioniert gut, danke. Aber weißt du, warum das so ist? Im Falle von this.router.navigate geben wir ein Array von Segmenten an. In Ihrer Arbeitslösung haben wir ein Array mit einem Eintrag, aber dieser Eintrag ist semantisch zwei Segmente. – user3287019

+0

Genau wie jede Befehlszeile –

0

Verwenden Sie stattdessen die Location.back() -Methode, die Location.back() -Methode führt Sie zur letzten Seite Ihres Browserverlaufs.

in Ihrer Komponente:

import { Location } from '@angular/common'; 
//some othe code ...... 
//in your class 
constructor(private location: Location) {} 

//create a method to go back 
goBack() { 
    this.location.back(); 
} 

nun eine Zurück-Taste in Ihrem component.html erstellen und binden diese Methode, um es:

<button (click)="goBack()" > Back </button> 
+0

In meinem Fall erfüllt Location.back() meine Anforderungen nicht. Aber trotzdem danke. – user3287019