| 
									
										
										
										
											2016-03-26 12:18:13 -04:00
										 |  |  | // #docplaster
 | 
					
						
							|  |  |  | // #docregion
 | 
					
						
							| 
									
										
										
										
											2016-05-03 14:06:32 +02:00
										 |  |  | import { Component, ElementRef, Host, Inject,  Optional } from '@angular/core'; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import { HeroCacheService } from './hero-cache.service'; | 
					
						
							|  |  |  | import { LoggerService }    from './logger.service'; | 
					
						
							| 
									
										
										
										
											2016-03-26 12:18:13 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | // #docregion component
 | 
					
						
							|  |  |  | @Component({ | 
					
						
							|  |  |  |   selector:'hero-contact', | 
					
						
							|  |  |  |   template:`
 | 
					
						
							|  |  |  |   <div>Phone #: {{phoneNumber}} | 
					
						
							|  |  |  |   <span *ngIf="hasLogger">!!!</span></div>`
 | 
					
						
							|  |  |  | }) | 
					
						
							|  |  |  | export class HeroContactComponent { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   hasLogger = false; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   constructor( | 
					
						
							|  |  |  |   // #docregion ctor-params
 | 
					
						
							|  |  |  |       @Host() // limit to the host component's instance of the HeroCacheService
 | 
					
						
							| 
									
										
										
										
											2016-05-03 14:06:32 +02:00
										 |  |  |       private heroCache: HeroCacheService, | 
					
						
							| 
									
										
										
										
											2016-03-26 12:18:13 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  |       @Host()     // limit search for logger; hides the application-wide logger
 | 
					
						
							|  |  |  |       @Optional() // ok if the logger doesn't exist
 | 
					
						
							| 
									
										
										
										
											2016-05-03 14:06:32 +02:00
										 |  |  |       private loggerService: LoggerService | 
					
						
							| 
									
										
										
										
											2016-03-26 12:18:13 -04:00
										 |  |  |   // #enddocregion ctor-params
 | 
					
						
							|  |  |  |   ) { | 
					
						
							| 
									
										
										
										
											2016-05-03 14:06:32 +02:00
										 |  |  |     if (loggerService) { | 
					
						
							| 
									
										
										
										
											2016-03-26 12:18:13 -04:00
										 |  |  |       this.hasLogger = true; | 
					
						
							| 
									
										
										
										
											2016-05-03 14:06:32 +02:00
										 |  |  |       loggerService.logInfo('HeroContactComponent can log!'); | 
					
						
							| 
									
										
										
										
											2016-03-26 12:18:13 -04:00
										 |  |  |     } | 
					
						
							|  |  |  |   // #docregion ctor
 | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  |   // #enddocregion ctor
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-05-03 14:06:32 +02:00
										 |  |  |   get phoneNumber() { return this.heroCache.hero.phone; } | 
					
						
							| 
									
										
										
										
											2016-03-26 12:18:13 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | // #enddocregion component
 |