1
- import { Injectable } from '@angular/core' ;
1
+ import {
2
+ Inject ,
3
+ Injectable ,
4
+ } from '@angular/core' ;
2
5
import {
3
6
ActivatedRoute ,
7
+ ActivatedRouteSnapshot ,
4
8
NavigationEnd ,
5
- Route ,
6
9
Router ,
7
10
} from '@angular/router' ;
8
11
import {
@@ -12,12 +15,16 @@ import {
12
15
merge ,
13
16
} from 'rxjs' ;
14
17
18
+ import {
19
+ DAFF_ROUTER_DATA_SERVICE_CONFIG ,
20
+ DaffRouterDataServiceConfig ,
21
+ } from '../config/public_api' ;
15
22
import { daffRouterDataCollect } from '../helpers/collect-data' ;
16
23
17
24
@Injectable ( {
18
25
providedIn : 'root' ,
19
26
} )
20
- export class DaffRouterDataService < T extends Route [ 'data' ] = Route [ 'data' ] > {
27
+ export class DaffRouterDataService < T extends ActivatedRouteSnapshot [ 'data' ] = ActivatedRouteSnapshot [ 'data' ] > {
21
28
/**
22
29
* A collection of all the route data defined in any part of the currently activated route's tree.
23
30
* Child route's data takes precendence over parent data.
@@ -27,6 +34,7 @@ export class DaffRouterDataService<T extends Route['data'] = Route['data']> {
27
34
constructor (
28
35
private route : ActivatedRoute ,
29
36
private router : Router ,
37
+ @Inject ( DAFF_ROUTER_DATA_SERVICE_CONFIG ) private config : DaffRouterDataServiceConfig ,
30
38
) {
31
39
/**
32
40
* Because data won't reemit for route changes and
@@ -46,7 +54,7 @@ export class DaffRouterDataService<T extends Route['data'] = Route['data']> {
46
54
this . route . url ,
47
55
) . pipe (
48
56
map ( ( ) => this . route . snapshot ) ,
49
- map ( daffRouterDataCollect < T > ) ,
57
+ map ( ( r ) => daffRouterDataCollect < T > ( r , this . config . mergeStrategy ) ) ,
50
58
) ;
51
59
}
52
60
}
0 commit comments