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