1
1
import { Injectable } from '@angular/core' ;
2
- import { Router , ActivatedRoute , NavigationEnd } from '@angular/router' ;
2
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop' ;
3
+ import { ActivatedRoute , NavigationEnd , Router } from '@angular/router' ;
3
4
import { BehaviorSubject , Observable } from 'rxjs' ;
4
5
import { filter } from 'rxjs/operators' ;
5
6
import { IBreadcrumbItem } from '../breadcrumb-item/breadcrumb-item' ;
6
7
7
8
@Injectable ( {
8
- providedIn : 'root' ,
9
+ providedIn : 'root'
9
10
} )
10
11
export class BreadcrumbRouterService {
11
12
public outlet = 'primary' ;
@@ -21,7 +22,10 @@ export class BreadcrumbRouterService {
21
22
this . breadcrumbs$ = this . breadcrumbsBehaviorSubject . asObservable ( ) ;
22
23
23
24
this . router . events
24
- . pipe ( filter ( ( event ) => event instanceof NavigationEnd ) )
25
+ . pipe (
26
+ takeUntilDestroyed ( ) ,
27
+ filter ( ( event ) => event instanceof NavigationEnd )
28
+ )
25
29
. subscribe ( ( event ) => {
26
30
const breadcrumbs : any [ ] = [ ] ;
27
31
let currentRoute : ActivatedRoute | null = this . route . root ;
@@ -33,13 +37,11 @@ export class BreadcrumbRouterService {
33
37
// console.log('breadcrumb event', event, 'route', route);
34
38
if ( childRoute . outlet === this . outlet ) {
35
39
const routeSnapshot = childRoute . snapshot ;
36
- url +=
37
- '/' +
38
- routeSnapshot . url . map ( ( segment ) => segment . path ) . join ( '/' ) ;
40
+ url += '/' + routeSnapshot . url . map ( ( segment ) => segment . path ) . join ( '/' ) ;
39
41
breadcrumbs . push ( {
40
42
label : childRoute . snapshot . data [ 'title' ] || '' ,
41
43
url,
42
- queryParams : routeSnapshot . queryParams ,
44
+ queryParams : routeSnapshot . queryParams
43
45
} ) ;
44
46
currentRoute = childRoute ;
45
47
}
0 commit comments