首页 > 解决方案 > 如何在 Angular 10 中获取上一页 URL

问题描述

如何在 Angular 10 中获取上一页 url?我正在尝试使用下面帖子中最初提到的过滤器、成对和路由器 RoutesRecognized

如何确定 Angular 中的上一页 URL?

第一次不返回任何值,第二次返回,第三次返回值 2 次,下次递增。

如何从第一次获得确切的值,并且应该在此页面中每次返回控制台一次?

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

@Component({
  selector: 'app-a',
  templateUrl: './a.component.html',
  styleUrls: ['./a.component.css']
})
export class AComponent implements OnInit {

  constructor(
    private router: Router
  ) { }

  ngOnInit(): void {
    this.router.events
      .pipe(filter((e: any) => e instanceof RoutesRecognized),
        pairwise()
      ).subscribe((e: any) => {
        console.log(e[0].urlAfterRedirects); // previous url
    });
  }
}

标签: angular

解决方案


您可以使用事件 instanceof NavigationEnd 并创建一个服务来持久化 currentUrl 并将其分配回任何路由器 NavigationEnd 事件上的先前 url。

我创建了一个带有用例快速演示的 Stackblitz:https ://stackblitz.com/edit/angular-xw94et?file=src/app/app.component.html


推荐阅读