56 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			56 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| // #docregion
 | |
| import {Component} from 'angular2/core';
 | |
| import {LoggerService}  from './logger.service';
 | |
| import {Spy} from './spy.directive';
 | |
| 
 | |
| @Component({
 | |
|   selector: 'spy-parent',
 | |
|   template: `
 | |
|   <div class="parent">
 | |
|     <h2>Spy Directive</h2>
 | |
| 
 | |
|     <input [(ngModel)]="newName" (keyup.enter)="addHero()">
 | |
|     <button (click)="addHero()">Add Hero</button>
 | |
|     <button (click)="reset()">Reset Heroes</button>
 | |
| 
 | |
|     <p></p>
 | |
|     <div *ngFor="#hero of heroes" my-spy class="heroes">
 | |
|       {{hero}}
 | |
|     </div>
 | |
| 
 | |
|     <h4>-- Spy Lifecycle Hook Log --</h4>
 | |
|     <div *ngFor="#msg of spyLog">{{msg}}</div>
 | |
|    </div>
 | |
|   `,
 | |
|   styles: [
 | |
|      '.parent {background: khaki; padding: 10px; margin:100px 8px}',
 | |
|      '.heroes {background: LightYellow; padding: 0 8px}'
 | |
|   ],
 | |
|   directives: [Spy],
 | |
|   providers: [LoggerService]
 | |
| })
 | |
| export class SpyParentComponent {
 | |
|   newName = 'Herbie';
 | |
|   heroes:string[] = ['Windstorm', 'Magneta'];
 | |
|   spyLog:string[];
 | |
| 
 | |
|   private _logger:LoggerService;
 | |
| 
 | |
|   constructor(logger:LoggerService){
 | |
|     this._logger = logger;
 | |
|     this.spyLog = logger.logs;
 | |
|   }
 | |
| 
 | |
|   addHero() {
 | |
|     if (this.newName.trim()) {
 | |
|       this.heroes.push(this.newName.trim());
 | |
|       this.newName = '';
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   reset(){
 | |
|     this._logger.log('-- reset --');
 | |
|     this.heroes.length = 0;
 | |
|   }
 | |
| }
 |