File

src/app/layouts/layouts-utils/breadcrumb.component.ts

Metadata

selector breadcrumbs
template
<ng-template ngFor let-breadcrumb [ngForOf]="breadcrumbs" let-last = last>
  <li class="breadcrumb-item" *ngIf="breadcrumb.label.title&&breadcrumb.url.substring(breadcrumb.url.length-1) == '/' || breadcrumb.label.title&&last" [ngClass]="{active: last}">
    <a *ngIf="!last" [routerLink]="breadcrumb.url">{{breadcrumb.label.title}}</a>
    <span *ngIf="last" [routerLink]="breadcrumb.url">{{breadcrumb.label.title}}</span>
  </li>
</ng-template>

Index

Properties
Methods

Constructor

constructor(router: Router, route: ActivatedRoute)
Parameters :
Name Type Optional Description
router Router
route ActivatedRoute

Methods

Private initBreadcrumbs
initBreadcrumbs()
Returns : void
ngOnInit
ngOnInit()
Returns : void

Properties

breadcrumbs
breadcrumbs: Array<Object>
Type : Array<Object>
import { Component }                                from '@angular/core';
import { Router, ActivatedRoute, NavigationEnd }    from '@angular/router';
import 'rxjs/add/operator/filter';

@Component({
  selector: 'breadcrumbs',
  template: `
  <ng-template ngFor let-breadcrumb [ngForOf]="breadcrumbs" let-last = last>
    <li class="breadcrumb-item" *ngIf="breadcrumb.label.title&&breadcrumb.url.substring(breadcrumb.url.length-1) == '/' || breadcrumb.label.title&&last" [ngClass]="{active: last}">
      <a *ngIf="!last" [routerLink]="breadcrumb.url">{{breadcrumb.label.title}}</a>
      <span *ngIf="last" [routerLink]="breadcrumb.url">{{breadcrumb.label.title}}</span>
    </li>
  </ng-template>`
})
export class BreadcrumbsComponent {
  breadcrumbs: Array<Object>;

  constructor(private router: Router, private route: ActivatedRoute) {
  }

  ngOnInit(): void {
    this.initBreadcrumbs();
    this.router.events.filter(event => event instanceof NavigationEnd).subscribe(event => this.initBreadcrumbs());
  }

  private initBreadcrumbs() {
    this.breadcrumbs = [];
    let currentRoute = this.route.root,
      url = '';
    do {
      let childrenRoutes = currentRoute.children;
      currentRoute = null;
      childrenRoutes.forEach(route => {
        if (route.outlet === 'primary') {
          let routeSnapshot = route.snapshot;
          url += '/' + routeSnapshot.url.map(segment => segment.path).join('/');
          this.breadcrumbs.push({
            label: route.snapshot.data,
            url: url
          });
          currentRoute = route;
        }
      });
    } while (currentRoute);
  }
}
Legend
Html element
Component
Html element with directive

results matching ""

    No results matching ""