Angular2:如何在使用angular2路由时找出上一页的URL

时间:2016-02-08 21:04:18

标签: angular angular2-routing

我正在开发一个angular2应用程序,我使用路由器。 我在页面/ myapp /注册。注册后,我将使用导航到/ myapp / login。 / myapp / login也可以从我的主页/ myapp导航。所以现在,当用户users / myapp / login我回去了。这可以通过使用location.back()来完成。但是当用户来自/ myapp / signup时,我不想回去。所以我应该检查用户是否来自/ myapp / signup,如果是,我想将它指向其他地方。 我如何才能知道以前的网址,以便根据具体情况将用户引导到特定状态?

7 个答案:

答案 0 :(得分:23)

pairwise运算符允许将当前值与前一个值

一起获取

更新

import 'rxjs/add/operator/pairwise';
import 'rxjs/add/operator/filter';
import { Router, NavigationEnd } from '@angular/router';

export class AppComponent {
    constructor(private router: Router) {
        this.router.events
        .filter(e => e instanceof NavigationEnd)
        .pairwise().subscribe((e) => {
            console.log(e);
        });
    }
}

另见How to detect a route change in Angular?

原创(超级老)

注入Router并订阅事件并存储以供日后参考

constructor(private _router: Router) {
  this._router.subscribe(route => {
    this.nextRoute ...
    this.prevRoute ...
  });

答案 1 :(得分:1)

是的,我会这样做:

 keywords:"product management"

答案 2 :(得分:1)

Angular 6更新了以前的url为字符串的代码。

File "/home/dc97fc38c3d1e4a695c9d3550e8af5c1.py", line 16, in <module>
l=[float(int(input())) for i in range(0,n)]
File "/home/dc97fc38c3d1e4a695c9d3550e8af5c1.py", line 16, in <listcomp>
l=[float(int(input())) for i in range(0,n)]
ValueError: invalid literal for int() with base 10: '1 2 3'  

答案 3 :(得分:0)

您可以使用document.referrer

执行此操作
if(document.referrer !== '/myapp/signup'){
    location.back()
}

答案 4 :(得分:0)

您可以利用routerOnActivate方法利用routerOnActivate(next: ComponentInstruction, prev: ComponentInstruction) { console.log(`Finished navigating from "${prev ? prev.urlPath : 'null'}" to "${next.urlPath}"`); } 方法访问上一个网址和当前网址。

@Entity

答案 5 :(得分:0)

您可以使用auth guard设置上一个url,并在应用程序的任何一个中设置前一个url。

canActivate(route: ActivatedRouteSnapshot, snapshot: RouterStateSnapshot) {
                this.commonService.prevRouter = this.router.url;
}

答案 6 :(得分:-1)

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

 private currentLocation;
 constructor(private location: Location){
    this.currentLocation = this.location.path();  
   }

ngAfterViewInit() {
 let instance = this;
 this.router.parent.subscribe(() => {            
        if (instance.currentLocation != instance.location.path()) {
             console.log("previous -> "+instance.currentLocation+" != next -> "+instance.location.path());             
        }else{
            console.log("previous -> "+instance.currentLocation+" == next -> "+instance.location.path());
        }
    });
}