如何获取导航历史记录?

时间:2019-03-05 09:06:40

标签: javascript angular angular7

我正在尝试实现一个菜单,其中包括Angular应用程序中最近访问和最常访问的页面。如何获得导航堆栈?还是我需要钩住navigationStart事件并在事件创建时对其进行编译?

1 个答案:

答案 0 :(得分:1)

我认为不可能通过简单的方法调用来获得完整的历史记录,但是您可以通过订阅NavigationEnd轻松地自己跟踪历史记录。

previousUrl: string;
constructor(router: Router) {
  router.events
  .filter(event => event instanceof NavigationEnd)
  .subscribe(e => {
    console.log('prev:', this.previousUrl);
    this.previousUrl = e.url;
  });
}

在此示例中,它仅保存先前的路线,但是您可以将其存储在数组中以保存所有先前访问的路线。

另请参阅: How to determine previous page URL in Angular?

更新:

您可以将上面的代码与下面的代码结合使用,以从应用程序的开头订阅服务中的NavigationEnd。

export class AppModule {
constructor(navigationEndService: NavigationEndService) {
    navigationEndService.init();
}

要在其他地方获得列表,您可以在服务中创建吸气剂。