angular - 如何在 Angular 10 中获取上一页 URL
问题描述
如何在 Angular 10 中获取上一页 url?我正在尝试使用下面帖子中最初提到的过滤器、成对和路由器 RoutesRecognized
第一次不返回任何值,第二次返回,第三次返回值 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
});
}
}
解决方案
您可以使用事件 instanceof NavigationEnd 并创建一个服务来持久化 currentUrl 并将其分配回任何路由器 NavigationEnd 事件上的先前 url。
我创建了一个带有用例快速演示的 Stackblitz:https ://stackblitz.com/edit/angular-xw94et?file=src/app/app.component.html
推荐阅读
- oauth - Ejabberd Oauth:访问被拒绝
- python-3.x - TensorFlow TPU 培训。InvalidArgumentError:未声明的 TPU 计算输出
- python - 如何增加标签间距以避免networkx图中的标签重叠
- python - python没有使用绝对路径创建带有w+的文件
- youtube-api - Youtube API 搜索直播停止工作
- c# - 使用字典获得正确的“命令”
- redirect - 如何使用 chrome 在 URL 中添加字符?
- arrays - 了解 Count Triplets HackerRank
- c# - 通过c#实现asp.net登录系统
- flutter - Flutter Bloc 与多个流?