基于导航历史而不是路线路径的角度面包屑

2024-05-06

有没有办法实现基于导航历史记录的面包屑而不是基于正常路线路径的面包屑。

例子 路线 : 主页 - HChild1 - HChild1.1 首页 - HChild2 - HChild2.1

如果用户从主页导航到 HChild2.1,面包屑应该是 首页 | HChild2.1

代替 首页 | HChild2 | HChild2.1

然后,如果用户从 HChild2.1 导航到 HChild1.1,则面包屑应该是 首页 | HChild2.1 | HChild1.1

代替 首页 | HChild1.1 | HChild1.1

我所拥有的是基于正常路由路径的面包屑,这不能满足我的目的,因为我只能导航到 paranet 组件,而不能导航到前一个组件。

Thanks


使用面包屑组件填充导航结束路线中的最后一条路线。

路线必须有面包屑数据

//Home route
{ 
  path: '',
  component: HomeComponent,
  data: {breadcrumb:'Home'},
}

这是我制作的面包屑组件。

export interface BreadCrumb {
  label: string;
  url: string;
};

@Component({
  selector: 'breadcrumb',
  template: `<span *ngFor="let breadcrumb of breadcrumbs" >
    <a [routerLink]="breadcrumb.url">
      {{ breadcrumb.label }}
    </a>|
  </span>`
})
export class BreadCrumbComponent {
  private history = [];
  breadcrumbs: BreadCrumb[] = [];
  constructor(
    private router: Router,
    private activatedRoute: ActivatedRoute,
  ) { }

  public ngOnInit(): void {
    this.router.events
      .pipe(filter(event => event instanceof NavigationEnd), distinctUntilChanged(),map(() => {
        return this.buildBreadCrumb(this.activatedRoute.root)
      }
      ))
      .subscribe(event => {
        this.breadcrumbs.push(event);
        console.log(this.breadcrumbs)
      });
  }
  buildBreadCrumb(route: ActivatedRoute, url: string = ''): BreadCrumb {
    const label = route.routeConfig ? route.routeConfig.data['breadcrumb'] : 'Home';
    const path = route.routeConfig ? `/${route.routeConfig.path}` : '';

    const nextUrl = `${url}${path}`;
    const breadcrumb = {
      label: label,
      url: nextUrl
    };

    if (route.firstChild) {
      return this.buildBreadCrumb(route.firstChild, nextUrl);
    }
    return breadcrumb;
  }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基于导航历史而不是路线路径的角度面包屑 的相关文章

随机推荐

  • 类模板的嵌套模板参数推导不起作用

    In 本次问答 https stackoverflow com a 42221591 819272我编写了一个小包装类 它提供对范围的反向迭代器访问 依赖于类模板的 c 1z 语言功能模板参数推导 p0091r3 http www open
  • 在Android上显示简单的位图

    图形初学者在这里 我试图在我的设备上显示一个简单的图像 但没有出现任何内容 并且日志 没有显示任何错误 程序运行但没有任何反应 这是我的代码 protected void onDraw Canvas canvas canvas drawBi
  • 未捕获的类型错误:$.ajax 不是函数

    我正在制作一个带有排行榜表的小型游戏项目 我正在尝试使用 jQuery ajax 和 PHP 从 mysql 数据库获取排行榜以显示 但它给了我一条错误消息 我的语法看起来不错 所以我不确定问题是什么 leader btn click fu
  • 使用 Webpack 进行缓存,索引源代码中的 [hash] 值,使用 React.js

    我正在构建一个同构应用程序 它完全是用react构建的 也就是说 html基础也在react中 我有我的根 html 作为应用程序组件 它看起来像这样 var AppTemplate React createClass displayNam
  • d3 同步 2 个独立的缩放行为

    我有以下 d3 d3fc 图表 https codepen io parliament718 pen BaNQPXx https codepen io parliament718 pen BaNQPXx 该图表的主要区域有缩放行为 y 轴有
  • Google 服务帐户用户界面

    我怎样才能登录谷歌服务帐户 https developers google com identity protocols OAuth2ServiceAccount使用普通的网络用户界面 例如谷歌驱动器 https www google co
  • 无法解析:com.google.android.gms:play-services:15.0.1

    在同步 gradle 时出现以下错误 我检查了与类似问题相关的其他答案并遵循了他们的答案 但仍然出现相同的错误 无法解析 com google android gms play services 15 0 1 安装存储库并同步项目 在文件中
  • 在 Unix 中,我可以在目录中运行“make”而无需先 cd 到该目录吗?

    在 Unix 中 我可以运行make在没有的目录中cd首先进入该目录 make C path to dir
  • Java 日历一天中的小时返回 12 小时格式

    在 Java 文档中 Calendar HOUR应该以 12 小时格式返回小时 并且Calendar HOUR OF DAY应该以 24 小时格式返回小时 但两者都以 12 小时格式返回 My Code Calendar rightNow
  • ActiveMQ 的 @SendTo 注释无提示地失败

    我试图使用 SendTo 注释将 JMS 消息推送到 SpringBoot 应用程序中的独立 ActiveMQ 代理 但是执行完成时没有错误 异常 但消息未排队 相反 如果我使用 JmsTemplate 在代码中注释 消息将排队 使用 Se
  • 什么是接口标识符

    我有一台笔记本电脑 使用一个或多个网络适配器连接到我组织的网络 我正在尝试编写一个工具来持续监控每个网络的连接状态和连接质量 然而 我的网络知识有限 术语让我感到困惑 特别是查找所有网络适配器 有人建议我使用命令ifconfig它给了我所谓
  • Next.js 使用 SSR 的本地存储问题

    我有以下自定义挂钩 它将数据存储在本地存储中 import useCallback useEffect useState from react export const useLocalStorage key initialValue gt
  • 如何用不动点进行多项式拟合

    我一直在使用 numpy 使用最小二乘法 在 python 中进行一些拟合 我想知道是否有一种方法可以让它适应数据 同时强制它通过一些固定点 如果没有 python 中是否有另一个库 或我可以链接到的另一种语言 例如 c NOTE我知道可以
  • 使用 Excel VBA 在 Outlook 电子邮件中使用 HTML 设置背景图像

    我正在尝试使用 Excel VBA 创建一封有关澳大利亚儿童癌症研究所的电子邮件 并带有背景图像 CCIALittleGirl jpg 然后 我希望在其上方有一个文本或文本框 最好是带有白色粗体文本 我可以在运行时填充这些文本 我可以在电子
  • 如何跟踪访客从哪里来到我的网站 php

    我想跟踪用户访问我的网站的网站 URL 他来自 i el Google GMail Facebook 等 I tried SERVER HTTP REFERER 但当用户从任何外部站点单击我的站点链接时 它不包含任何内容 但当我访问我的站点
  • 在散景图中隐藏图例

    LS 散景图会自动生成图例 如何隐藏 根本不显示 散景图中的图例 我试过 legend none 但没有成功 谢谢 如果我能稍微扩展一下 legend False是使散景图例不可见的正确方法 但它在绘图本身的创建中使用 而不是作为绘图对象的
  • Hibernate版本的jars,maven,应该放在一起吗?

    我很难理解哪些 jar 版本应该与 hibernate 一起使用 我有一组可以一起工作的 hibernate 版本 Maven 东西 但我不知道为什么 我怎样才能知道哪些版本与其他版本一起工作 我也想升级我的休眠 但我不知道要放入什么版本号
  • 将字符串拆分为单词和标点符号,而不使用任何导入

    我见过与我的问题类似的问题 但它们都使用了正则表达式 我想做的是接受诸如 哇 这真的很有帮助 之类的输入 然后返回到 哇 这真的很有帮助 所以我想将标点符号从单词中分离出来 我已经尝试过这个 但它根本不起作用 sentence input
  • 将 ArgIterator 编组到 va_list

    所以 我想到了尝试 p invoke C 函数va list 我知道如何 p 调用经典的可变参数函数 使用 arglist 在我看来va list就像一个ArgIterator 我认为可以将其传递给该方法 DllImport msvcrt
  • 基于导航历史而不是路线路径的角度面包屑

    有没有办法实现基于导航历史记录的面包屑而不是基于正常路线路径的面包屑 例子 路线 主页 HChild1 HChild1 1 首页 HChild2 HChild2 1 如果用户从主页导航到 HChild2 1 面包屑应该是 首页 HChild