30 lines
		
	
	
		
			846 B
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
		
		
			
		
	
	
			30 lines
		
	
	
		
			846 B
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
|  | // #docregion
 | ||
|  | import {Component, Input, OnChanges, SimpleChange} from 'angular2/core'; | ||
|  | 
 | ||
|  | @Component({ | ||
|  |   selector: 'version-child', | ||
|  |   template: `
 | ||
|  |     <h3>Version {{major}}.{{minor}}</h3> | ||
|  |     <h4>Change log:</h4> | ||
|  |     <ul> | ||
|  |       <li *ngFor="#change of changeLog">{{change}}</li> | ||
|  |     </ul> | ||
|  |   `
 | ||
|  | }) | ||
|  | export class VersionChildComponent implements OnChanges { | ||
|  |   @Input() major: number; | ||
|  |   @Input() minor: number; | ||
|  |   changeLog: string[] = []; | ||
|  | 
 | ||
|  |   ngOnChanges(changes: {[propKey:string]: SimpleChange}){ | ||
|  |     let log: string[] = []; | ||
|  |     for (let propName in changes) { | ||
|  |       let changedProp = changes[propName]; | ||
|  |       let from = JSON.stringify(changedProp.previousValue); | ||
|  |       let to =   JSON.stringify(changedProp.currentValue); | ||
|  |       log.push( `${propName} changed from ${from} to ${to}`); | ||
|  |     } | ||
|  |     this.changeLog.push(log.join(', ')); | ||
|  |   } | ||
|  | } | ||
|  | // #enddocregion
 |