Angular 2 获取上一页网址

6
我有两个组件:客户组件和货运组件。当用户从货运组件跳转到客户组件时,我希望客户组件直接返回到货运组件。
我使用的方法是:从angular/common中的Location使用this._location.back();
这种方法总是直接返回到上一个页面。但是我只想在从货物组件返回时才直接返回。

1
你可以像 https://dev59.com/NFwX5IYBdhLWcg3wrRE5#38080657 中所示使用 pairwise,并将当前值和上一个值存储在服务中。 - Günter Zöchbauer
1个回答

11

更新针对 Angular 6

将以下代码插入到包含 2 个组件的父组件中:

import { Router, RoutesRecognized } from "@angular/router";
import { filter, pairwise } from 'rxjs/operators';

previousUrl:string;

constructor(private router: Router) {

    router.events
        .pipe(
          filter(event => event instanceof RoutesRecognized),
          pairwise()
        )            
        .subscribe((e: any) => {
            this.previousUrl = e[0].urlAfterRedirects;
        });
}

它对我起作用了,希望对你也有效。


将此代码添加到包含您的2个组件的父组件中。 - Yashwardhan Pauranik
我在代码中添加了pairwise方法。它返回两个URL,当前和先前的。但是我没有在任何地方使用这些URL。 - NadirCan KAVKAS
您可以订阅路由更改并存储当前事件,以便在下一次发生时使用它。这取决于您的期望。在最初(第一次)时,它的值将为null,因为没有先前的路由。您还需要在根路由器上执行此操作,否则,您只会在此组件的子路由之间导航时才能获得它。 - Yashwardhan Pauranik
6
出错了:类型“RouteConfigLoadStart”上不存在属性"url"。 - Yasar Arafath
2
这个答案不应该被接受,而且很可能应该被删除。这只返回当前路由,而不像建议的那样返回上一个URL。 - john_h
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接