1
+ /* tslint:disable:one-line:check-open-brace*/
2
+ // #docplaster
1
3
// #docregion opaque-token
2
4
import { OpaqueToken } from 'angular2/core' ;
3
5
4
6
export const TITLE = new OpaqueToken ( 'title' ) ;
5
7
// #enddocregion opaque-token
6
8
7
- // #docregion
9
+ // #docregion hero-of-the-month
8
10
import { Component , Inject , provide } from 'angular2/core' ;
9
11
10
12
import { DateLoggerService ,
11
13
MinimalLogger } from './date-logger.service' ;
12
14
import { Hero } from './hero' ;
13
15
import { HeroService } from './hero.service' ;
14
16
import { LoggerService } from './logger.service' ;
15
- import { RunnersUp } from './runners-up' ;
16
- import { runnersUpFactory } from './runners-up-provider.service ' ;
17
+ import { RUNNERS_UP ,
18
+ runnersUpFactory } from './runners-up' ;
17
19
18
- @Component ( {
19
- selector :'hero-of-the-month' ,
20
- template :`
20
+ // #enddocregion hero-of-the-month
21
+ // #docregion some-hero
22
+ const someHero = new Hero ( 42 , 'Magma' , 'Had a great month!' , '555-555-5555' ) ;
23
+ // #enddocregion some-hero
24
+
25
+ const template = `
21
26
<h3>{{title}}</h3>
22
- <div>Winner: <strong>{{_heroOfTheMonth .name}}</strong></div>
23
- <div>Reason for award: <strong>{{_heroOfTheMonth .description}}</strong></div>
24
- <div>Other candidates : <strong id="names ">{{_runnersUp.names }}</strong></div>
27
+ <div>Winner: <strong>{{heroOfTheMonth .name}}</strong></div>
28
+ <div>Reason for award: <strong>{{heroOfTheMonth .description}}</strong></div>
29
+ <div>Runners-up : <strong id="rups ">{{runnersUp }}</strong></div>
25
30
26
31
<p>Logs:</p>
27
32
<div id="logs">
28
33
<div *ngFor="#log of logs">{{log}}</div>
29
34
</div>
30
- ` ,
35
+ ` ;
31
36
32
- // #docregion providers
33
- providers :[
34
- HeroService ,
35
- provide ( Hero , { useValue : new Hero ( 42 , 'Magma' , 'Had a great month!' , '555-555-5555' ) } ) ,
37
+ // #docregion hero-of-the-month
38
+ @Component ( {
39
+ selector : 'hero-of-the-month' ,
40
+ template : template ,
41
+ providers : [
42
+ provide ( Hero , { useValue : someHero } ) ,
43
+ // #docregion use-class
44
+ provide ( HeroService , { useClass : HeroService } ) ,
36
45
provide ( LoggerService , { useClass : DateLoggerService } ) ,
46
+ // #enddocregion use-class
47
+ // #docregion use-existing
37
48
provide ( MinimalLogger , { useExisting : LoggerService } ) ,
38
- provide ( RunnersUp , { useFactory : runnersUpFactory , deps :[ Hero , HeroService ] } ) ,
39
- provide ( TITLE , { useValue : 'Hero of the Month' } )
49
+ // #enddocregion use-existing
50
+ // #docregion provide-token
51
+ // #docregion use-factory
52
+ provide ( RUNNERS_UP , { useFactory : runnersUpFactory ( 2 ) , deps : [ Hero , HeroService ] } ) ,
53
+ // #enddocregion use-factory
54
+ provide ( TITLE , { useValue : 'Hero of the Month' } )
55
+ // #docregion provide-token
40
56
]
41
- // #enddocregion providers
42
57
} )
43
- // #docregion class
44
58
export class HeroOfTheMonthComponent {
45
- logs :string [ ] = [ ] ;
59
+ logs : string [ ] = [ ] ;
46
60
61
+ // #docregion ctor-signature
47
62
constructor (
48
63
logger : MinimalLogger ,
49
- private _heroOfTheMonth : Hero ,
50
- private _runnersUp : RunnersUp ,
51
- @Inject ( TITLE ) public title : string ) {
52
-
64
+ public heroOfTheMonth : Hero ,
65
+ @Inject ( RUNNERS_UP ) public runnersUp : string ,
66
+ @Inject ( TITLE ) public title : string )
67
+ // #enddocregion ctor-signature
68
+ {
53
69
this . logs = logger . logs ;
54
70
logger . logInfo ( 'starting up' ) ;
55
71
}
56
72
}
57
- // #enddocregion class
58
- // #enddocregion
73
+ // #enddocregion hero-of-the-month
0 commit comments