如何回到最后一页
有没有一种聪明的方式可以回到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';