55 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
		
		
			
		
	
	
			55 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
|  | // #docregion
 | ||
|  | import {Component}         from 'angular2/core'; | ||
|  | import {PeekABooComponent} from './peek-a-boo.component' | ||
|  | import {LoggerService}  from './logger.service'; | ||
|  | 
 | ||
|  | @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> | ||
|  |     <div *ngFor="#msg of hookLog">{{msg}}</div> | ||
|  |   </div> | ||
|  |   `,
 | ||
|  |   styles: ['.parent {background: moccasin; padding: 10px; margin:100px 8px}'], | ||
|  |   directives: [PeekABooComponent], | ||
|  |   providers: [LoggerService] | ||
|  | }) | ||
|  | export class PeekABooParentComponent { | ||
|  | 
 | ||
|  |   hasChild = false; | ||
|  |   hookLog:string[]; | ||
|  | 
 | ||
|  |   heroName = 'Windstorm'; | ||
|  |   private _logger:LoggerService; | ||
|  | 
 | ||
|  |   constructor(logger:LoggerService){ | ||
|  |     this._logger = logger; | ||
|  |     this.hookLog = logger.logs; | ||
|  |   } | ||
|  | 
 | ||
|  |   toggleChild() { | ||
|  |     this.hasChild = !this.hasChild; | ||
|  |     if (this.hasChild) { | ||
|  |       this.heroName = 'Windstorm'; | ||
|  |       this._logger.clear(); // clear log on create
 | ||
|  |     } | ||
|  |     this._logger.tick(); | ||
|  |   } | ||
|  | 
 | ||
|  |   updateHero() { | ||
|  |     this.heroName += '!'; | ||
|  |     this._logger.tick(); | ||
|  |   } | ||
|  | } |