如何回到最后一页

有没有一种聪明的方式可以回到Angular 2的最后一页?

就像是

this._router.navigate(LASTPAGE); 

例如,页面C有一个返回button,

  • 页面A – >页面C,点击它,回到页面A.

  • 页面B – >页面C,点击它,回到页面B.

路由器有这个历史信息吗?

其实你可以利用内置的位置服务,它拥有一个“返回”的API。

这里(打字稿):

 import {Component} from '@angular/core'; import {Location} from '@angular/common'; @Component({ // component's declarations here }) class SomeComponent { constructor(private _location: Location) { } backClicked() { this._location.back(); } } 

在Angular 2.x / 4.x的最终版本中:

 /* typescript */ import { Location } from '@angular/common'; // more imports here... @Component({ // component's declarations here }) export class MyComponent { constructor(private location: Location) { } // inject Location into class constructor cancel() { this.location.back(); // <-- go back to previous location on cancel } } 

看看文档https://angular.io/docs/ts/latest/api/common/index/Location-class.html

你可以在你的路由类上实现routerOnActivate()方法,它会提供关于前一个路由的信息。

 routerOnActivate(nextInstruction: ComponentInstruction, prevInstruction: ComponentInstruction) : any 

然后你可以使用router.navigateByUrl()并传递从ComponentInstruction生成的数据。 例如:

 this._router.navigateByUrl(prevInstruction.urlPath); 

在RC4中:

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

我在导航到不同页面的时候通过传递当前位置添加了一个查询参数

 this.router.navigate(["user/edit"], { queryParams: { returnUrl: this.router.url } 

在你的组件中阅读这个查询参数

 this.router.queryParams.subscribe((params) => { this.returnUrl = params.returnUrl; }); 

如果returnUrl存在,则启用后退button,当用户单击后退button时

 this.router.navigateByUrl(this.returnUrl); // Hint taken from Sasxa 

这应该能够导航到前一页。 而不是使用location.back,我觉得上面的方法是更安全的,考虑到用户直接login到你的页面,如果他按下后退buttonlocation.back它将redirect到上一页,这将不是你的网页。

在angular度4使用preserveQueryParams ,例如:

 url: /list?page=1 <a [routerLink]="['edit',id]" [preserveQueryParams]="true"></a> 

点击链接时,您被redirectedit/10?page=1 ,保留params

ref: https : //angular.io/docs/ts/latest/guide/router.html#!# link-parameters- array

由于testing版18:

import {Location} from 'angular2/platform/common';