首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于导航历史而不是路径路径的Angular Breadcrumb

基于导航历史而不是路径路径的Angular Breadcrumb
EN

Stack Overflow用户
提问于 2019-06-21 14:21:37
回答 1查看 1.1K关注 0票数 1

有没有办法实现基于导航历史的面包屑,而不是基于普通路径的面包屑。

路由示例: Home - HChild1 -HChild1.1Home- HChild2 - HChild2.1

如果用户从主页导航到HChild2.1,则breadcrumb应为Home | HChild2.1

而不是主页| HChild2 | HChild2.1

如果用户从HChild2.1导航到HChild1.1,则breadcrumb应为Home | HChild2.1 | HChild1.1

而不是主页| HChild1.1 | HChild1.1

我所拥有的是基于breadcrumb的普通路由路径,它不能用于我的目的,因为我只能导航到paranet组件,而不能导航到前一个组件。

谢谢

EN

回答 1

Stack Overflow用户

发布于 2019-06-21 17:51:32

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

路径必须具有面包屑数据

代码语言:javascript
复制
//Home route
{ 
  path: '',
  component: HomeComponent,
  data: {breadcrumb:'Home'},
}

这是我制作的breadcrumb组件。

代码语言:javascript
复制
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;
  }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56697897

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档