web-dev-qa-db-fra.com

Comment obtenir l'URL de la page précédente en angular 5

Je travaille avec l'application Angular 5 et j'ai besoin de savoir comment obtenir la dernière URL pour la placer en tant que lien vers mon bouton de retour. J'ai trouvé cette location.back() mais ce dont j'ai besoin de la dernière URL sous forme de chaîne. Comment puis-je obtenir la chaîne qui génère location.back()?

Merci beaucoup!

4
AlejoDev

Angular 6 a mis à jour le code pour obtenir l'url précédente sous forme de chaîne.

import { Component, OnInit } from '@angular/core';
import { Router, RoutesRecognized } from '@angular/router';
import { filter, pairwise } from 'rxjs/operators';


export class AppComponent implements OnInit {

    constructor (
        public router: Router
    ) {
    }

    ngOnInit() {
        this.router.events
            .pipe(filter((e: any) => e instanceof RoutesRecognized),
                pairwise()
            ).subscribe((e: any) => {
                console.log(e[0].urlAfterRedirects); // previous url
            });
    }
12
Franklin Pious

Dans l'environnement du navigateur, location.back() est enroulé autour du window.history objet (pour un chemin partiel à travers la source, voir ici , ici , ici et ici ).

Le contenu de l'objet Historique n'est pas délibérément accessible.

À partir de la documentation de l'interface HTML History :

Les entrées réelles ne sont pas accessibles à partir du script.

De MDN la documentation de l'objet window.history :

Pour des raisons de sécurité, l'objet Historique ne permet pas au code non privilégié d'accéder aux URL des autres pages de l'historique de session, mais il lui permet de naviguer dans l'historique de session.


Quant à une approche alternative, cette réponse fournit une technique pour écouter les 2 derniers événements NavigationEnd .

1
chuckx

Vous pouvez le faire dans angular 5 de la manière suivante.

import { Location } from '@angular/common';
export class ChatComponent implements OnInit {
    constructor(private _location: Location) {
    }

    goback() {
        this._location.back();
    }
}

J'espère que cette réponse vous sera utile.

0
Mikinj Mistry