实现独立的面包屑导航组件(BreadcrumbComponent),负责根据当前路由生成和显示面包屑导航。
文件: src/app/layout/breadcrumb/breadcrumb.component.ts
核心功能:
路由映射:
文件: src/app/layout/breadcrumb/breadcrumb.component.html
特性:
<nav> 和 <ol> 标签文件: src/app/layout/breadcrumb/breadcrumb.component.scss
样式特点:
修改内容:
Breadcrumb 接口定义(现在由 BreadcrumbComponent 导出)breadcrumbs 属性和 routeMap 映射updateBreadcrumbs() 和 navigateTo() 方法BreadcrumbComponent模板更新:
<!-- 旧代码 -->
<nav class="header__breadcrumb" aria-label="面包屑导航">
<ol class="breadcrumb-list">
<!-- 复杂的面包屑渲染逻辑 -->
</ol>
</nav>
<!-- 新代码 -->
<app-breadcrumb class="header__breadcrumb"></app-breadcrumb>
样式更新:
.header__breadcrumb 容器样式文件: src/app/layout/breadcrumb/breadcrumb.component.spec.ts
测试覆盖:
文件: src/app/layout/header/header.component.spec.ts
修改内容:
app-breadcrumb 组件存在性的验证所有 BreadcrumbComponent 相关测试通过:
BreadcrumbComponent 专注于面包屑导航的生成和显示,HeaderComponent 专注于顶部栏的整体布局和用户交互。
独立的 BreadcrumbComponent 可以在其他布局中复用,不依赖于 HeaderComponent。
✅ Requirements 1.4: THE Merchant Portal SHALL display breadcrumb navigation in the header showing the current page path
src/app/layout/breadcrumb/breadcrumb.component.ts - 组件逻辑src/app/layout/breadcrumb/breadcrumb.component.html - 组件模板src/app/layout/breadcrumb/breadcrumb.component.scss - 组件样式src/app/layout/breadcrumb/breadcrumb.component.spec.ts - 单元测试src/app/layout/header/header.component.ts - 移除面包屑逻辑,导入 BreadcrumbComponentsrc/app/layout/header/header.component.html - 使用 <app-breadcrumb> 组件src/app/layout/header/header.component.scss - 移除面包屑样式src/app/layout/header/header.component.spec.ts - 更新测试用例成功实现了独立的 BreadcrumbComponent,将面包屑导航逻辑从 HeaderComponent 中分离出来,提高了代码的可维护性和可复用性。组件支持所有应用路由,能够自动根据路由变化更新面包屑,并提供了完整的点击导航功能。所有测试通过,符合设计要求。