【angular5项目积累总结】breadcrumb面包屑组件
view
code
- <div class="fxs-breadcrumb-wrapper" aria-label="Navigation history">
- <div class="fxs-breadcrumb-dropmenu">
- <div class="fxs-dropmenu" role="presentation">
- <div class="fxs-dropmenu-content fxs-text-link fxs-popup fxs-portal-bg-txt-br fxs-dropmenu-defaultWidth fxs-dropmenu-right fxs-dropmenu-invisible">
- <ul class="fxs-breadcrumb-overflow">
- </ul>
- </div>
- </div>
- </div>
- <ng-container *ngFor="let breadcrumb of breadcrumbs; index as i">
- <div class="fxs-breadcrumb-divider fxs-trim-svg-secondary">
- <svg height="100%" width="100%" aria-hidden="true" role="presentation" focusable="false">
- <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#FxSymbol0-011"></use>
- </svg>
- </div>
- <a [routerLink]="[breadcrumb.url, breadcrumb.params]" class="fxs-breadcrumb-crumb fxs-trim-text fxs-trim-hover">{{ breadcrumb.label }}</a>
- </ng-container>
- </div>
- import { Component, OnInit } from "@angular/core";
- import { Router, ActivatedRoute, NavigationEnd, Params, PRIMARY_OUTLET } from "@angular/router";
- import "rxjs/add/operator/filter";
- interface IBreadcrumb {
- label: string;
- params: Params;
- url: string;
- }
- @Component({
- selector: 'breadcrumb',
- templateUrl: './breadcrumb.component.html',
- host: {
- 'class': 'fxs-breadcrumb'
- }
- })
- export class BreadcrumbComponent implements OnInit {
- public breadcrumbs: IBreadcrumb[];
- constructor(
- private activatedRoute: ActivatedRoute,
- private router: Router
- ) {
- this.breadcrumbs = [];
- }
- ngOnInit() {
- this.router.events.filter(event => event instanceof NavigationEnd).subscribe(event => {
- let root: ActivatedRoute = this.activatedRoute.root;
- this.breadcrumbs = this.getBreadcrumbs(root);
- });
- }
- private getBreadcrumbs(route: ActivatedRoute, url: string = "", breadcrumbs: IBreadcrumb[] = []): any {
- const ROUTE_DATA_BREADCRUMB: string = "breadcrumb";
- let children: ActivatedRoute[] = route.children;
- if (children.length === 0) {
- return breadcrumbs;
- }
- for (let child of children) {
- if (child.outlet !== PRIMARY_OUTLET) {
- continue;
- }
- if (!child.snapshot.data.hasOwnProperty(ROUTE_DATA_BREADCRUMB)) {
- return this.getBreadcrumbs(child, url, breadcrumbs);
- }
- let routeURL: string = child.snapshot.url.map(segment => segment.path).join("/");
- if (routeURL == "") {
- return this.getBreadcrumbs(child, url, breadcrumbs);
- }
- url += `/${routeURL}`;
- let breadcrumb: IBreadcrumb = {
- label: child.snapshot.data[ROUTE_DATA_BREADCRUMB],
- params: child.snapshot.params,
- url: url
- };
- breadcrumbs.push(breadcrumb);
- return this.getBreadcrumbs(child, url, breadcrumbs);
- }
- }
- }
【angular5项目积累总结】breadcrumb面包屑组件的更多相关文章
- react+ant design Breadcrumb面包屑组件
import React from 'react'; import { Link }from 'react-router-dom'; import { Breadcrumb } from 'antd' ...
- woocommerce隐藏breadcrumb面包屑导航
woocommerce已经集成比较完善的组件,当然也包含breadcrumb面包屑导航,但是我们如果调整一下breadcrumb的位置要如何操作呢?首先要先把woocommerce隐藏breadcru ...
- Vue折腾记 - (2)写一个不大靠谱的面包屑组件
先看效果图 我把页面标题和面包屑封装到一起..就不用涉及到组件的通讯了,不然又要去监听路由或者依赖状态去获取 这里写图片描述 疑惑解答: 点击父(也就是折叠菜单)为什么会跑到子菜单第一个 因为我第一个 ...
- yoast breadcrumb面包屑导航修改去掉product
前面我们创建了wordpress添加post_type自定义文章类型和调用自定义post_type文章,现在yoast 面包屑导航出现home >product >分类1,想要把produ ...
- 【angular5项目积累总结】优秀组件以及应用实例
1.手机端 图片预览组件 组件:sideshow 效果图:(预览图全屏 且可以左右移动) code: <div class="row ui-app-s ...
- 【angular5项目积累总结】avatar组件
View Code import { Component, HostListener, ElementRef } from '@angular/core'; import { Adal4Service ...
- 【angular5项目积累总结】panel组件
view code panel.component.css :host { display:flex; min-width:300px } panel.component.html <heade ...
- 【angular5项目积累总结】遇到的一些问题以及解决办法
1.项目中字符串特别是\r\n,替换成br之后,在页面换行无法生效? 答:绑定元素 innerHTML. <div class="panel-body" [innerHTML ...
- 【angular5项目积累总结】消息订阅服务
code import { Injectable } from '@angular/core'; import { Subject } from 'rxjs/Subject'; @Injectable ...
随机推荐
- Brain Rules: 12 Principles for Surviving and Thriving at Work, Home, and School
选自 https://litemind.com/brain-rules/
- centos下添加git
CentOS中yum里没有Git,需要手动安装. 首先需要安装git的依赖包 yum install curl yum install curl-devel yum install zlib-deve ...
- bootstrap基础学习(四)——网格系统(列的偏移、排序、嵌套)
网格系统——列偏移.列排序.列嵌套 列偏移:有的时候,我们不希望相邻的两个列紧靠在一起,但又不想使用margin或者其他的技术手段来.这个时候就可以使用列偏移(offset)功能来实现.使用列偏移也非 ...
- .net下WinDbg使用说明
加载调试文件 .loadby sos mscorwks #.Net 3.5版本及以下 .loadby sos clr #.Net 4.0 WinDbg的基本命令 !threads #显示所有线程 !d ...
- 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)\) \( ...
- 利用Python做绝地科学家(外挂篇)
i春秋作家:奶权 前言 玩吃鸡时间长的鸡友们 应该都知道现在的游戏环境非常差 特别在高端局 神仙满天飞 搞得很多普通玩家非常没有游戏体验 因为吃鸡的火爆 衍生出了一条巨大的外挂利益链 导致市面上出 ...
- Web安全测试学习手册-业务逻辑测试
i春秋作家:Vulkey_Chen 首先感谢朋友倾璇的邀请 http://payloads.online/archivers/2018-03-21/1 ,参与了<web安全测试学习手册>的 ...
- 改变您的HTTP服务器的缺省banner
(以下方法仅针对 IIS Asp.net) 服务器扫描发现漏洞,其中一个是: 可通过HTTP获取远端WWW服务信息 [Microsoft-IIS/8.5] 漏洞描述 本插件检测远端HTTP Serve ...
- UICollectionView设置首个cell默认选中
设置UICollectionView中某个cell的默认选中,刚开始为追求性能,采用同一个cellId去标识UICollectionViewCell,却由于cell的重用会导致之前选中的cell在被重 ...
- linux的RPM软件包管理工具
RPM(Redhat Package Manage)原本是Red Hat Linux发行版专门用来管理Linux各项套件的程序,由于它遵循GPL规则且功能强大方便,因而广受欢迎.逐渐受到其他发行版的采 ...