首页/新闻资讯/正文详情

ng-zorro-antd 面包屑(Breadcrumb)组件完整指南:静态导航、路由自动生成与自定义配置

发布时间:2026/9/25 2:12:06 来源:云帆数科 栏目:资讯中心
ng-zorro-antd 面包屑(Breadcrumb)组件完整指南:静态导航、路由自动生成与自定义配置
UI组件前端【免费下载链接】ng-zorro-antdAngular UI Component Library based on Ant Design项目地址https://gitcode.com/gh_mirrors/ng/ng-zorro-antd点击查看免费下载本文是一篇围绕 ng-zorro-antd 中nz-breadcrumb面包屑组件的实战技术指南以官方文档 components/breadcrumb/doc/index.zh-CN.md 为骨架结合组件源码与示例代码深入展开。阅读本文后你将掌握面包屑的基本用法、基于 Angular Router 的自动生成机制nzAutoGenerate、以及nzSeparator、nzRouteLabel、nzRouteLabelFn、nzRouteFn等核心 API 的完整配置技巧并能直接将其落地到自己的 Angular 项目中。何时使用面包屑面包屑Breadcrumb用于显示当前页面在系统层级结构中的位置并提供向上返回的导航能力。根据官方文档在以下场景中应当使用当系统拥有超过两级以上的层级结构时当需要告知用户『你在哪里』时当需要向上导航的功能时。在 ng-zorro-antd 中面包屑的入口为NzBreadCrumbModule通过 public-api.ts 对外导出。引入模块后即可在模板中使用nz-breadcrumb及其子组件nz-breadcrumb-item。基础用法静态面包屑最简单的场景是直接在模板中声明面包屑的层级无需任何路由配置。参考示例 demo/basic.tsimport { Component } from angular/core; import { NzBreadCrumbModule } from ng-zorro-antd/breadcrumb; Component({ selector: nz-demo-breadcrumb-basic, imports: [NzBreadCrumbModule], template: nz-breadcrumb nz-breadcrumb-itemHome/nz-breadcrumb-item nz-breadcrumb-item aApplication List/a /nz-breadcrumb-item nz-breadcrumb-itemAn Application/nz-breadcrumb-item /nz-breadcrumb }) export class NzDemoBreadcrumbBasicComponent {}每个nz-breadcrumb-item对应一级导航内容可以是纯文本也可以是链接a。若需要配合路由跳转可直接在a上使用 Angular 原生的RouterLink见 demo/router.tsimport { RouterLink } from angular/router; Component({ selector: nz-demo-breadcrumb-router, imports: [RouterLink, NzBreadCrumbModule], template: nz-breadcrumb nz-breadcrumb-item a [routerLink][../../]Home/a /nz-breadcrumb-item nz-breadcrumb-itemBreadcrumb/nz-breadcrumb-item /nz-breadcrumb }) export class NzDemoBreadcrumbRouterComponent {}分隔符自定义nzSeparator默认情况下相邻的两个面包屑项之间以/分隔。[nzSeparator]允许你自定义分隔符它支持三种取值类型说明string任意字符串例如、-TemplateRefvoid自定义模板例如图标或 SVGnull不显示分隔符默认值为/。参考示例 demo/separator.ts!-- 使用字符串分隔符 -- nz-breadcrumb nzSeparator nz-breadcrumb-itemHome/nz-breadcrumb-item nz-breadcrumb-item aApplication List/a /nz-breadcrumb-item nz-breadcrumb-itemAn Application/nz-breadcrumb-item /nz-breadcrumb !-- 使用 TemplateRef 分隔符图标 -- nz-breadcrumb [nzSeparator]iconTemplate nz-breadcrumb-itemHome/nz-breadcrumb-item nz-breadcrumb-item aApplication List/a /nz-breadcrumb-item nz-breadcrumb-itemAn Application/nz-breadcrumb-item /nz-breadcrumb ng-template #iconTemplatenz-icon nzTypearrow-right //ng-template从源码看分隔符的渲染由nz-breadcrumb-separator组件承担breadcrumb-separator.component.ts其宿主 class 为ant-breadcrumb-separator。而在 breadcrumb-item.component.ts 中nzSeparator通过nzStringTemplateOutlet指令统一处理字符串与模板两种形态——这意味着你也可以在nzSeparator里放一个模板变量实现任意复杂的图形化分隔符例如箭头图标、冒号等。路由自动生成nzAutoGenerate当你的系统层级与路由结构一一对应时手动逐级书写nz-breadcrumb-item会显得冗长且容易遗漏。此时可以将[nzAutoGenerate]置为true让面包屑依据当前路由的嵌套层级自动生成。工作原理源码级解读自动生成的核心逻辑在 breadcrumb.component.ts 中ngOnInit中检测到nzAutoGenerate true时调用registerRouterChange()该方法订阅Router.events过滤出NavigationEnd事件并配合startWith(true)触发首次渲染每次路由切换后调用递归函数getBreadcrumbs(activatedRoute.root)从路由树根节点开始逐层向下解析在每一层只解析child.outlet PRIMARY_OUTLET的子路由即默认的router-outlet具名 outlet 会被忽略将child.snapshot.url的各段路径拼接为url从child.snapshot.data中取出标签最终生成BreadcrumbOption[]数组label面包屑显示文本params该路由快照中的参数url经nzRouteFn处理后的跳转地址。模板中遍历breadcrumbs为每一项渲染nz-breadcrumb-itema [attr.href]breadcrumb.url (click)navigate(...){{ breadcrumb.label }}/a/nz-breadcrumb-itemnavigate方法会preventDefault()后调用注入的Router.navigateByUrl(url)完成 SPA 内跳转避免整页刷新。需要特别注意的是若在未引入RouterModule的环境下使用nzAutoGenerate源码会抛出明确的错误提示You should import RouterModule if you want to use NzAutoGenerate.在路由中声明 data使用[nzAutoGenerate]时需要在路由配置中为对应路由定义databreadcrumb字段即该层级在面包屑上显示的名称{ path: path, component: SomeComponent, data: { breadcrumb: Display Name } }在模板中只需一行nz-breadcrumb [nzAutoGenerate]true/nz-breadcrumb最小可运行示例见 demo/auto.ts。懒加载路由的 data 放置位置对于懒加载路由loadChildren由于子路由模块在加载完成前其自身配置尚未注册应该在父层路由上写data否则自动生成时无法取到标签{ path: first, loadChildren: () import(./first/first.module).then(m m.FirstModule), data: { breadcrumb: First } }这与源码的递归逻辑相呼应当某层routeUrl为空懒加载占位路由通常无路径段时源码会保持nextUrl不变继续向下递归标签则从该层快照的data中读取。自定义路由属性名称nzRouteLabel默认情况下自动生成从路由data.breadcrumb取值。如果你的项目约定使用其他字段名例如与后端接口、其他文档工具统一的命名可以通过[nzRouteLabel]指定nz-breadcrumb [nzAutoGenerate]true [nzRouteLabel]customBreadcrumb/nz-breadcrumb{ path: path, component: SomeComponent, data: { customBreadcrumb: Display Name } }nzRouteLabel的类型为string默认值为breadcrumb。注意该参数仅在nzAutoGenerate为true时生效。国际化标签格式化nzRouteLabelFn在面向多语言的国际化应用中路由data中存的往往不是最终文案而是一个 i18n 翻译键。[nzRouteLabelFn]允许你传入一个格式化函数把取出的原始值翻译成用户看到的文字nz-breadcrumb [nzAutoGenerate]true [nzRouteLabel]breadcrumbI18nKey [nzRouteLabelFn]translateFn /nz-breadcrumb// In Route { path: path, component: SomeComponent, data: { breadcrumbI18nKey: i18n.aaa.bbbb } } // In component translateFn (key: string) this.yourI18nService.translate(key);其类型签名为(label: string) string默认值为恒等函数label label仅在nzAutoGenerate为true时生效。从源码看该函数作用于child.snapshot.data[this.nzRouteLabel]的取值结果并会在值为空时跳过该层级不生成面包屑项因此翻译键缺失不会产生空白导航项。URL 与 query params 定制nzRouteFn面包屑自动生成时每个导航项的跳转地址由路由路径拼接而来。如果需要在跳转 URL 上附加当前页面的 query params例如多页签系统中的筛选条件可以使用[nzRouteFn]对地址做二次加工nz-breadcrumb [nzAutoGenerate]true [nzRouteLabel]breadcrumbI18nKey [nzRouteLabelFn]translateFn [nzRouteFn]customRoute /nz-breadcrumb// In component bindCurrentParams(params, route) { let newRoute route; for (const key in params) { if (params.hasOwnProperty(key)) { newRoute ;${key}${params[key]}; } } return newRoute; } const params this.activatedRoute.snapshot.params; customRoute (route: string) this.bindCurrentParams(params, route);nzRouteFn的类型签名为(route: string) string默认值为route route仅在nzAutoGenerate为true时生效。源码中它作用于nextUrl即拼接后的完整路径返回值会被写入BreadcrumbOption.url并最终用于生成a href与Router.navigateByUrl的跳转目标。面包屑项下拉菜单nzOverlay当某一层级下存在多个分支时可以让该面包屑项挂接一个下拉菜单展示其子级入口。nz-breadcrumb-item提供[nzOverlay]输入接收一个NzDropdownMenuComponent类型的下拉模板参考示例 demo/dropdown.tsnz-breadcrumb nz-breadcrumb-itemAnt Design/nz-breadcrumb-item nz-breadcrumb-item aComponent/a /nz-breadcrumb-item nz-breadcrumb-item [nzOverlay]menu a hrefAn Application/a /nz-breadcrumb-item nz-breadcrumb-itemButton/nz-breadcrumb-item /nz-breadcrumb nz-dropdown-menu #menunzDropdownMenu ul nz-menu nzSelectable li nz-menu-itemGeneral/li li nz-menu-itemLayout/li li nz-menu-itemNavigation/li /ul /nz-dropdown-menu从 breadcrumb-item.component.ts 的实现看当nzOverlay存在时该项会被包裹在带ant-breadcrumb-overlay-linkclass 的nz-dropdown容器中并追加一个down方向图标nz-icon nzTypedown /点击即可展开下拉菜单。该能力同样可以叠加图标使用完整示例可参考 demo/with-icon.ts 与 demo/separator-independent.ts。API 参数速查表以下为nz-breadcrumb组件全部输入参数的官方定义同 index.zh-CN.md参数说明类型默认值[nzSeparator]分隔符自定义string \| TemplateRefvoid \| null/[nzAutoGenerate]自动生成 Breadcrumbbooleanfalse[nzRouteLabel]自定义 route data 属性名称nzAutoGenerate为true时才生效stringbreadcrumb[nzRouteLabelFn]格式化面包屑导航项的显示文字通常用于在国际化应用中翻译键值nzAutoGenerate为true时才生效(label: string) stringlabel label[nzRouteFn]格式化面包屑路由格式可用于为 URL 添加 query paramsnzAutoGenerate为true时才生效(route: string) routeroute route子组件nz-breadcrumb-item还提供[nzOverlay]类型NzDropdownMenuComponent | undefined用于在导航项上挂接下拉菜单。风格与细节根组件宿主 class 为ant-breadcrumb在 RTL 环境下会自动追加ant-breadcrumb-rtl源码中通过 CDK 的Directionality信号检测见 breadcrumb.component.ts因此面包屑可无缝适配阿拉伯语等从右到左排版的界面每项内容被包裹在ant-breadcrumb-link中分隔符渲染为ant-breadcrumb-separator样式定义见 style/index.less组件的自动化测试覆盖了基础渲染、下拉菜单、分隔符、RTL 方向等场景见 breadcrumb.spec.ts可作为接入与回归验证的参考。小结面包屑是导航体系中成本最低、收益最直观的组件之一。ng-zorro-antd 的nz-breadcrumb既支持纯模板静态声明也支持基于 Angular Router 的零手工自动生成当自动生成不足以覆盖你的业务规则时nzRouteLabel、nzRouteLabelFn、nzRouteFn三个钩子分别提供了字段名定制、国际化翻译和 URL 加工能力配合nzSeparator与nzOverlay即可覆盖绝大多数中后台系统的导航需求。赞分享UI组件前端【免费下载链接】ng-zorro-antdAngular UI Component Library based on Ant Design项目地址https://gitcode.com/gh_mirrors/ng/ng-zorro-antd点击查看免费下载相关推荐ng-zorro-antd Breadcrumb 面包屑组件实战指南从基础用法到路由自动生成与国际化ng zorro antd Breadcrumb 面包屑组件实战指南从基础用法到路由自动生成与国际化 导读 Breadcrumb面包屑是 ng zorroUI组件前端ng-zorro-antd Breadcrumb 组件基本用法实战从静态列表到自动生成导航ng zorro antd Breadcrumb 组件基本用法实战从静态列表到自动生成导航 导读 本文围绕 ng zorro antdAngular 官方UI组件前端React Router路由面包屑动态生成和自定义面包屑的完整指南React Router路由面包屑动态生成和自定义面包屑的完整指南 React Router是现代React应用中最流行的路由解决方案而 面包屑导航 是提升前端路由上一篇PhotoDemon开发者指南如何基于VB6源码进行二次开发下一篇探索Akira一个高效、灵活的React UI框架创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

pylibcudf 字符串与浮点数互转实战:to_floats、from_floats 与 is_float 的用法与底层实现
pylibcudf 字符串与浮点数互转实战:to_floats、from_floats 与 is_float 的用法与底层实现

数据分析数据工程机器学习 【免费下载链接】cudf cuDF - GPU DataFrame Library 项目地址: https://gitcode.com/gh_mirrors/cu/cudf 点击查看 免费下载 导读 本文围绕 pylibcudf 字符串转换模块中的 strings.convert.convert_floats 子模块展开,系统… · 2026/9/25 2:12:00

ISG信息安全竞赛题型全解析:五类考点与备赛策略
ISG信息安全竞赛题型全解析:五类考点与备赛策略

简介:一份聚焦ISG信息安全竞赛核心题型与备赛要点的Word文档,适合参赛选手、网络安全学习者及高校相关专业学生快速了解CTF式竞赛的考察范围。内容系统梳理了比赛的五类典型题目:Web漏洞与渗透、软件逆向、漏洞挖掘与利用、密码学原理及应用、… · 2026/9/25 2:11:54

四分类运动想象BCI自采数据与CSP特征工程实战指南
四分类运动想象BCI自采数据与CSP特征工程实战指南

简介:面向2025世界机器人大赛BCI脑控机器人赛项MetaBCI创新应用开发赛道,这份压缩包是一套完整的自采四分类运动想象脑电数据项目,适合参赛队伍、BCI研究者及脑电机器学习初学者对照实践。包内共64个文件,核心是28对.set/.fdt格式… · 2026/9/25 2:11:54

Quip Node Manager 架构解析:Tauri v2 + Rust 如何编排 Docker 节点堆栈
Quip Node Manager 架构解析:Tauri v2 + Rust 如何编排 Docker 节点堆栈

Quip Node Manager 架构解析:Tauri v2 Rust 如何编排 Docker 节点堆栈 【免费下载链接】quip-node-manager A simple GUI client to manage a Quip Network node 项目地址: https://gitcode.com/gh_mirrors/qu/quip-node-manager Quip Node Manager 是一款基… · 2026/9/25 3:04:48

链表核心操作实战:单链表与双向链表的插入删除及逆序详解
链表核心操作实战:单链表与双向链表的插入删除及逆序详解

数组和链表哪个更好?这是我在带学生做数据结构实验时,被问得最多的问题。单链表和双向链表作为数据结构课程里的绝对主角,不仅考研408年年考,期末试卷次次出,更是后续栈、队列、图论的基础。我见过太多同学拿着严蔚敏的… · 2026/9/25 3:04:47

10个必看的AI Agent Harness开源项目:Awesome Harness Engineering 38个运行时与参考实现实战指南
10个必看的AI Agent Harness开源项目:Awesome Harness Engineering 38个运行时与参考实现实战指南

10个必看的AI Agent Harness开源项目:Awesome Harness Engineering 38个运行时与参考实现实战指南 【免费下载链接】awesome-harness-engineering 🛠️ Awesome tools & guides for harness engineering. 项目地址: https://gitcode.com/gh_mirror… · 2026/9/25 3:04:47

WeChatMsg 微信聊天记录导出完整教程:备份、检索、年度报告一次理清
WeChatMsg 微信聊天记录导出完整教程:备份、检索、年度报告一次理清

WeChatMsg 微信聊天记录导出完整教程:备份、检索、年度报告一次理清 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Tren… · 2026/9/25 3:04:41

NgRx ComponentStore 初始化机制详解:构造函数初始化与惰性初始化(Lazy Initialization)
NgRx ComponentStore 初始化机制详解:构造函数初始化与惰性初始化(Lazy Initialization)

前端状态管理 【免费下载链接】platform Reactive State for Angular 项目地址: https://gitcode.com/gh_mirrors/pl/platform 点击查看 免费下载 本文基于 NgRx platform 仓库中 ComponentStore 指南的 Initialization 章节展开,系统讲解 ngrx/compone… · 2026/9/25 3:04:41

索引详解:从B+树到倒排索引,覆盖数据库、搜索与流媒体
索引详解:从B+树到倒排索引,覆盖数据库、搜索与流媒体

“索引”这个词,在技术圈里出现得远比你想象中频繁。一说数据库,MySQL、PostgreSQL、Oracle 里靠索引把查询从几秒压到几毫秒;聊到搜索引擎,又有倒排索引这个词;前端表格排序时行号错乱、HLS 视频流的 m3u8 切片清单、… · 2026/9/25 3:04:41

数值优化(Numerical Optimization)学习系列-03-共轭梯度方法(Conjugate Gradient)
数值优化(Numerical Optimization)学习系列-03-共轭梯度方法(Conjugate Gradient)

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31

创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战
创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31

MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX
MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:37

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码