1.  
  2. import { Component, Input, OnChanges, SimpleChange } from '@angular/core';
  3. @Component({
  4. selector: 'app-version-child',
  5. template: `
  6. ‹h3›Version {{major}}.{{minor}}‹/h3›
  7. ‹h4›Change log:‹/h4›
  8. ‹ul›
  9. ‹li *ngFor="let change of changeLog"›{{change}}‹/li›
  10. ‹/ul›
  11. `
  12. })
  13. export class VersionChildComponent implements OnChanges {
  14. @Input() major: number;
  15. @Input() minor: number;
  16. changeLog: string[] = [];
  17. ngOnChanges(changes: {[propKey: string]: SimpleChange}) {
  18. let log: string[] = [];
  19. for (let propName in changes) {
  20. let changedProp = changes[propName];
  21. let to = JSON.stringify(changedProp.currentValue);
  22. if (changedProp.isFirstChange()) {
  23. log.push(`Initial value of ${propName} set to ${to}`);
  24. } else {
  25. let from = JSON.stringify(changedProp.previousValue);
  26. log.push(`${propName} changed from ${from} to ${to}`);
  27. }
  28. }
  29. this.changeLog.push(log.join(', '));
  30. }
  31. }
  32.