| 
									
										
										
										
											2015-11-21 11:23:40 -08:00
										 |  |  | // #docregion
 | 
					
						
							| 
									
										
										
										
											2016-05-03 14:06:32 +02:00
										 |  |  | import { Component } from '@angular/core'; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import { LoggerService } from './logger.service'; | 
					
						
							| 
									
										
										
										
											2015-11-21 11:23:40 -08:00
										 |  |  | 
 | 
					
						
							|  |  |  | @Component({ | 
					
						
							|  |  |  |   selector: 'peek-a-boo-parent', | 
					
						
							|  |  |  |   template: `
 | 
					
						
							|  |  |  |   <div class="parent"> | 
					
						
							|  |  |  |     <h2>Peek-A-Boo</h2> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     <button (click)="toggleChild()"> | 
					
						
							|  |  |  |       {{hasChild ? 'Destroy' : 'Create'}} PeekABooComponent | 
					
						
							|  |  |  |     </button> | 
					
						
							|  |  |  |     <button (click)="updateHero()" [hidden]="!hasChild">Update Hero</button> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     <peek-a-boo *ngIf="hasChild" [name]="heroName"> | 
					
						
							|  |  |  |     </peek-a-boo> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     <h4>-- Lifecycle Hook Log --</h4> | 
					
						
							| 
									
										
										
										
											2016-04-29 01:36:35 +01:00
										 |  |  |     <div *ngFor="let msg of hookLog">{{msg}}</div> | 
					
						
							| 
									
										
										
										
											2015-11-21 11:23:40 -08:00
										 |  |  |   </div> | 
					
						
							|  |  |  |   `,
 | 
					
						
							| 
									
										
										
										
											2016-01-23 18:21:09 +00:00
										 |  |  |   styles: ['.parent {background: moccasin}'], | 
					
						
							| 
									
										
										
										
											2016-08-09 17:38:25 +01:00
										 |  |  |   providers:  [ LoggerService ] | 
					
						
							| 
									
										
										
										
											2015-11-21 11:23:40 -08:00
										 |  |  | }) | 
					
						
							|  |  |  | export class PeekABooParentComponent { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   hasChild = false; | 
					
						
							| 
									
										
										
										
											2016-04-27 11:28:22 -07:00
										 |  |  |   hookLog: string[]; | 
					
						
							| 
									
										
										
										
											2015-11-21 11:23:40 -08:00
										 |  |  | 
 | 
					
						
							|  |  |  |   heroName = 'Windstorm'; | 
					
						
							| 
									
										
										
										
											2016-05-03 14:06:32 +02:00
										 |  |  |   private logger: LoggerService; | 
					
						
							| 
									
										
										
										
											2015-11-21 11:23:40 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-04-27 11:28:22 -07:00
										 |  |  |   constructor(logger: LoggerService) { | 
					
						
							| 
									
										
										
										
											2016-05-03 14:06:32 +02:00
										 |  |  |     this.logger = logger; | 
					
						
							| 
									
										
										
										
											2015-11-21 11:23:40 -08:00
										 |  |  |     this.hookLog = logger.logs; | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   toggleChild() { | 
					
						
							|  |  |  |     this.hasChild = !this.hasChild; | 
					
						
							|  |  |  |     if (this.hasChild) { | 
					
						
							|  |  |  |       this.heroName = 'Windstorm'; | 
					
						
							| 
									
										
										
										
											2016-05-03 14:06:32 +02:00
										 |  |  |       this.logger.clear(); // clear log on create
 | 
					
						
							| 
									
										
										
										
											2015-11-21 11:23:40 -08:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2016-05-03 14:06:32 +02:00
										 |  |  |     this.logger.tick(); | 
					
						
							| 
									
										
										
										
											2015-11-21 11:23:40 -08:00
										 |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   updateHero() { | 
					
						
							|  |  |  |     this.heroName += '!'; | 
					
						
							| 
									
										
										
										
											2016-05-03 14:06:32 +02:00
										 |  |  |     this.logger.tick(); | 
					
						
							| 
									
										
										
										
											2015-11-21 11:23:40 -08:00
										 |  |  |   } | 
					
						
							|  |  |  | } |