Existe-t-il un moyen intelligent de retourner à la dernière page d'Angular 2?
Quelque chose comme
this._router.navigate(LASTPAGE);
Par exemple, la page C a un Go Backbouton,
Page A -> Page C, cliquez dessus, retour à la page A.
Page B -> Page C, cliquez dessus, retour à la page B.
Le routeur possède-t-il ces informations d'historique?
angular
angular2-routing
Hongbo Miao
la source
la source
Location
états: "Remarque: il est préférable d'utiliser le service de routeur pour déclencher des changements de route. N'utilisez l'emplacement que si vous devez interagir avec ou créer des URL normalisées en dehors du routage." La réponse de @ Sasxa montre apparemment un moyenRouter
de le faire. Cependant, laLocation
méthode est certainement plus pratique. Est-ce que quelqu'un sait pourquoi laRouter
méthode pourrait être plus correcte que laLocation
méthode?Dans la version finale d'Angular 2.x / 4.x - voici la documentation https://angular.io/api/common/Location
la source
<button backButton>BACK</button>
Vous pouvez mettre cela dans une directive, qui peut être attachée à n'importe quel élément cliquable:
Usage:
la source
Testé avec Angular 5.2.9
Si vous utilisez une ancre au lieu d'un bouton, vous devez en faire un lien passif avec
href="javascript:void(0)"
pour faire fonctionner Angular Location.app.component.ts
app.component.html
la source
javascript:void(0)
. Quelque chose comme ...@Directive({ selector: '[clickPreventDefault]' }) export class ClickPreventDefaultDirective { @HostListener("click", ["$event"]) onClick($event: Event) { $event.preventDefault(); } }
Vous pouvez implémenter une
routerOnActivate()
méthode sur votre classe d'itinéraire, elle fournira des informations sur l'itinéraire précédent.Ensuite, vous pouvez utiliser
router.navigateByUrl()
et transmettre les données générées à partir deComponentInstruction
. Par exemple:la source
routerOnActivate
Fonctionne également pour moi lorsque je dois revenir en arrière comme dans le système de fichiers. PS @angular: "^ 5.0.0"
la source
J'ai créé un bouton que je peux réutiliser n'importe où sur mon application.
Créer ce composant
Ajoutez-le ensuite à n'importe quel modèle lorsque vous avez besoin d'un bouton de retour.
Remarque: Il s'agit d'un matériau angulaire, si vous n'utilisez pas cette bibliothèque, supprimez le
mat-button
etcolor
.la source
Après toutes ces réponses impressionnantes, j'espère que ma réponse trouvera quelqu'un et l'aidera. J'ai écrit un petit service pour garder une trace de l'historique des itinéraires. Ça y est.
la source
La façon dont je l'ai fait lors de la navigation vers une page différente, ajoutez un paramètre de requête en passant l'emplacement actuel
Lisez ce paramètre de requête dans votre composant
Si returnUrl est présent, activez le bouton de retour et lorsque l'utilisateur clique sur le bouton de retour
Cela devrait pouvoir accéder à la page précédente. Au lieu d'utiliser location.back, je pense que la méthode ci-dessus est plus sûre, considérez le cas où l'utilisateur atterrit directement sur votre page et s'il appuie sur le bouton de retour avec location.back, il redirigera l'utilisateur vers la page précédente qui ne sera pas votre page Web.
la source
Dans RC4:
la source
la source
Location
plutôt d' utiliser le service. API officielleDepuis la bêta 18:
import {Location} from 'angular2/platform/common';
la source
en utilisation angulaire 4
preserveQueryParams
, ex:Lorsque vous cliquez sur le lien, vous êtes redirigé
edit/10?page=1
, préservant les paramètresréf: https://angular.io/docs/ts/latest/guide/router.html#!#link-parameters-array
la source
Une autre solution
window.history.back();
la source