page-breadcrumb.component.ts 1.1 KB

1234567891011121314151617181920212223242526272829303132333435
  1. import { CommonModule } from '@angular/common';
  2. import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
  3. import { RouterModule } from '@angular/router';
  4. export interface PageBreadcrumbItem {
  5. label: string;
  6. link?: string | any[];
  7. }
  8. @Component({
  9. changeDetection: ChangeDetectionStrategy.OnPush,
  10. selector: 'app-page-breadcrumb',
  11. standalone: true,
  12. imports: [CommonModule, RouterModule],
  13. template: `
  14. <nav class="page-breadcrumb" aria-label="面包屑">
  15. @for (item of items; track $index; let last = $last) {
  16. @if (!last && item.link) {
  17. <a class="crumb-link" [routerLink]="item.link" queryParamsHandling="preserve">{{ item.label }}</a>
  18. } @else if (!last) {
  19. <span class="crumb-text">{{ item.label }}</span>
  20. } @else {
  21. <span class="crumb-current">{{ item.label }}</span>
  22. }
  23. @if (!last) {
  24. <span class="crumb-sep" aria-hidden="true">/</span>
  25. }
  26. }
  27. </nav>
  28. `,
  29. styleUrls: ['./page-breadcrumb.component.scss'],
  30. })
  31. export class PageBreadcrumbComponent {
  32. @Input() items: PageBreadcrumbItem[] = [];
  33. }