view

code

  1. <div class="fxs-breadcrumb-wrapper" aria-label="Navigation history">
  2. <div class="fxs-breadcrumb-dropmenu">
  3. <div class="fxs-dropmenu" role="presentation">
  4.  
  5. <div class="fxs-dropmenu-content fxs-text-link fxs-popup fxs-portal-bg-txt-br fxs-dropmenu-defaultWidth fxs-dropmenu-right fxs-dropmenu-invisible">
  6. <ul class="fxs-breadcrumb-overflow">
  7. </ul>
  8. </div>
  9. </div>
  10. </div>
  11. <ng-container *ngFor="let breadcrumb of breadcrumbs; index as i">
  12. <div class="fxs-breadcrumb-divider fxs-trim-svg-secondary">
  13. <svg height="100%" width="100%" aria-hidden="true" role="presentation" focusable="false">
  14. <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#FxSymbol0-011"></use>
  15. </svg>
  16. </div>
  17. <a [routerLink]="[breadcrumb.url, breadcrumb.params]" class="fxs-breadcrumb-crumb fxs-trim-text fxs-trim-hover">{{ breadcrumb.label }}</a>
  18. </ng-container>
  19. </div>
  1. import { Component, OnInit } from "@angular/core";
  2. import { Router, ActivatedRoute, NavigationEnd, Params, PRIMARY_OUTLET } from "@angular/router";
  3. import "rxjs/add/operator/filter";
  4. interface IBreadcrumb {
  5. label: string;
  6. params: Params;
  7. url: string;
  8. }
  9.  
  10. @Component({
  11. selector: 'breadcrumb',
  12. templateUrl: './breadcrumb.component.html',
  13. host: {
  14. 'class': 'fxs-breadcrumb'
  15. }
  16. })
  17.  
  18. export class BreadcrumbComponent implements OnInit {
  19.  
  20. public breadcrumbs: IBreadcrumb[];
  21.  
  22. constructor(
  23. private activatedRoute: ActivatedRoute,
  24. private router: Router
  25. ) {
  26. this.breadcrumbs = [];
  27. }
  28.  
  29. ngOnInit() {
  30.  
  31. this.router.events.filter(event => event instanceof NavigationEnd).subscribe(event => {
  32.  
  33. let root: ActivatedRoute = this.activatedRoute.root;
  34. this.breadcrumbs = this.getBreadcrumbs(root);
  35. });
  36. }
  37.  
  38. private getBreadcrumbs(route: ActivatedRoute, url: string = "", breadcrumbs: IBreadcrumb[] = []): any {
  39. const ROUTE_DATA_BREADCRUMB: string = "breadcrumb";
  40.  
  41. let children: ActivatedRoute[] = route.children;
  42.  
  43. if (children.length === 0) {
  44. return breadcrumbs;
  45. }
  46.  
  47. for (let child of children) {
  48.  
  49. if (child.outlet !== PRIMARY_OUTLET) {
  50. continue;
  51. }
  52.  
  53. if (!child.snapshot.data.hasOwnProperty(ROUTE_DATA_BREADCRUMB)) {
  54. return this.getBreadcrumbs(child, url, breadcrumbs);
  55. }
  56.  
  57. let routeURL: string = child.snapshot.url.map(segment => segment.path).join("/");
  58.  
  59. if (routeURL == "") {
  60. return this.getBreadcrumbs(child, url, breadcrumbs);
  61. }
  62.  
  63. url += `/${routeURL}`;
  64.  
  65. let breadcrumb: IBreadcrumb = {
  66. label: child.snapshot.data[ROUTE_DATA_BREADCRUMB],
  67. params: child.snapshot.params,
  68. url: url
  69. };
  70. breadcrumbs.push(breadcrumb);
  71.  
  72. return this.getBreadcrumbs(child, url, breadcrumbs);
  73. }
  74. }
  75.  
  76. }

【angular5项目积累总结】breadcrumb面包屑组件的更多相关文章

  1. react+ant design Breadcrumb面包屑组件

    import React from 'react'; import { Link }from 'react-router-dom'; import { Breadcrumb } from 'antd' ...

  2. woocommerce隐藏breadcrumb面包屑导航

    woocommerce已经集成比较完善的组件,当然也包含breadcrumb面包屑导航,但是我们如果调整一下breadcrumb的位置要如何操作呢?首先要先把woocommerce隐藏breadcru ...

  3. Vue折腾记 - (2)写一个不大靠谱的面包屑组件

    先看效果图 我把页面标题和面包屑封装到一起..就不用涉及到组件的通讯了,不然又要去监听路由或者依赖状态去获取 这里写图片描述 疑惑解答: 点击父(也就是折叠菜单)为什么会跑到子菜单第一个 因为我第一个 ...

  4. yoast breadcrumb面包屑导航修改去掉product

    前面我们创建了wordpress添加post_type自定义文章类型和调用自定义post_type文章,现在yoast 面包屑导航出现home >product >分类1,想要把produ ...

  5. 【angular5项目积累总结】优秀组件以及应用实例

    1.手机端 图片预览组件 组件:sideshow 效果图:(预览图全屏 且可以左右移动)                  code: <div class="row ui-app-s ...

  6. 【angular5项目积累总结】avatar组件

    View Code import { Component, HostListener, ElementRef } from '@angular/core'; import { Adal4Service ...

  7. 【angular5项目积累总结】panel组件

    view code panel.component.css :host { display:flex; min-width:300px } panel.component.html <heade ...

  8. 【angular5项目积累总结】遇到的一些问题以及解决办法

    1.项目中字符串特别是\r\n,替换成br之后,在页面换行无法生效? 答:绑定元素 innerHTML. <div class="panel-body" [innerHTML ...

  9. 【angular5项目积累总结】消息订阅服务

    code import { Injectable } from '@angular/core'; import { Subject } from 'rxjs/Subject'; @Injectable ...

随机推荐

  1. Brain Rules: 12 Principles for Surviving and Thriving at Work, Home, and School

    选自 https://litemind.com/brain-rules/

  2. centos下添加git

    CentOS中yum里没有Git,需要手动安装. 首先需要安装git的依赖包 yum install curl yum install curl-devel yum install zlib-deve ...

  3. bootstrap基础学习(四)——网格系统(列的偏移、排序、嵌套)

    网格系统——列偏移.列排序.列嵌套 列偏移:有的时候,我们不希望相邻的两个列紧靠在一起,但又不想使用margin或者其他的技术手段来.这个时候就可以使用列偏移(offset)功能来实现.使用列偏移也非 ...

  4. .net下WinDbg使用说明

    加载调试文件 .loadby sos mscorwks #.Net 3.5版本及以下 .loadby sos clr #.Net 4.0 WinDbg的基本命令 !threads #显示所有线程 !d ...

  5. DZY Loves Math(莫比乌斯反演)

    \(x=p_1^{\alpha_1}p_2^{\alpha_2}...p_c^{\alpha_c}\) \(f(x)=\max(\alpha_1,\alpha_2,...,\alpha_c)\) \( ...

  6. 利用Python做绝地科学家(外挂篇)

    i春秋作家:奶权 前言  玩吃鸡时间长的鸡友们 应该都知道现在的游戏环境非常差 特别在高端局 神仙满天飞 搞得很多普通玩家非常没有游戏体验  因为吃鸡的火爆 衍生出了一条巨大的外挂利益链 导致市面上出 ...

  7. Web安全测试学习手册-业务逻辑测试

    i春秋作家:Vulkey_Chen 首先感谢朋友倾璇的邀请 http://payloads.online/archivers/2018-03-21/1 ,参与了<web安全测试学习手册>的 ...

  8. 改变您的HTTP服务器的缺省banner

    (以下方法仅针对 IIS Asp.net) 服务器扫描发现漏洞,其中一个是: 可通过HTTP获取远端WWW服务信息 [Microsoft-IIS/8.5] 漏洞描述 本插件检测远端HTTP Serve ...

  9. UICollectionView设置首个cell默认选中

    设置UICollectionView中某个cell的默认选中,刚开始为追求性能,采用同一个cellId去标识UICollectionViewCell,却由于cell的重用会导致之前选中的cell在被重 ...

  10. linux的RPM软件包管理工具

    RPM(Redhat Package Manage)原本是Red Hat Linux发行版专门用来管理Linux各项套件的程序,由于它遵循GPL规则且功能强大方便,因而广受欢迎.逐渐受到其他发行版的采 ...