Mainly Dart-side review, following #1654: - Updates to follow style guide - Enabled e2e tests - Fixes to ensure tests pass: in after_view_component.dart and after_content_component.dart - Changed test over comment field in template to be: *ngIf="comment.isNotEmpty" - Suites passed: public/docs/_examples/lifecycle-hooks/dart public/docs/_examples/lifecycle-hooks/ts
		
			
				
	
	
		
			79 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Dart
		
	
	
	
	
	
			
		
		
	
	
			79 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Dart
		
	
	
	
	
	
// #docregion
 | 
						|
import 'package:angular2/core.dart';
 | 
						|
 | 
						|
import 'logger_service.dart';
 | 
						|
import 'spy_directive.dart';
 | 
						|
 | 
						|
@Component(
 | 
						|
    selector: 'my-counter',
 | 
						|
    template: '''
 | 
						|
    <div class="counter">
 | 
						|
      Counter = {{counter}}
 | 
						|
 | 
						|
      <h5>-- Counter Change Log --</h5>
 | 
						|
      <div *ngFor="let chg of changeLog" mySpy>{{chg}}</div>
 | 
						|
    </div>
 | 
						|
    ''',
 | 
						|
    styles: const [
 | 
						|
      '.counter {background: LightYellow; padding: 8px; margin-top: 8px}'
 | 
						|
    ],
 | 
						|
    directives: const [SpyDirective])
 | 
						|
class MyCounterComponent implements OnChanges {
 | 
						|
  @Input() num counter;
 | 
						|
  List<String> changeLog = [];
 | 
						|
 | 
						|
  ngOnChanges(Map<String, SimpleChange> changes) {
 | 
						|
    // Empty the changeLog whenever counter goes to zero
 | 
						|
    // hint: this is a way to respond programmatically to external value changes.
 | 
						|
    if (this.counter == 0) {
 | 
						|
      changeLog.clear();
 | 
						|
    }
 | 
						|
 | 
						|
    // A change to `counter` is the only change we care about
 | 
						|
    SimpleChange chng = changes['counter'];
 | 
						|
    var cur = chng.currentValue;
 | 
						|
    var prev = chng.isFirstChange() ? "{}" : chng.previousValue;
 | 
						|
    changeLog.add('counter: currentValue = $cur, previousValue = $prev');
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
@Component(
 | 
						|
    selector: 'counter-parent',
 | 
						|
    template: '''
 | 
						|
    <div class="parent">
 | 
						|
      <h2>Counter Spy</h2>
 | 
						|
 | 
						|
      <button (click)="updateCounter()">Update counter</button>
 | 
						|
      <button (click)="reset()">Reset Counter</button>
 | 
						|
 | 
						|
      <my-counter [counter]="value"></my-counter>
 | 
						|
 | 
						|
      <h4>-- Spy Lifecycle Hook Log --</h4>
 | 
						|
      <div *ngFor="let msg of logs">{{msg}}</div>
 | 
						|
    </div>
 | 
						|
    ''',
 | 
						|
    styles: const ['.parent {background: gold;}'],
 | 
						|
    directives: const [MyCounterComponent],
 | 
						|
    providers: const [LoggerService])
 | 
						|
class CounterParentComponent {
 | 
						|
  final LoggerService _logger;
 | 
						|
  num value;
 | 
						|
 | 
						|
  CounterParentComponent(this._logger) {
 | 
						|
    reset();
 | 
						|
  }
 | 
						|
 | 
						|
  List<String> get logs => _logger.logs;
 | 
						|
 | 
						|
  void updateCounter() {
 | 
						|
    value += 1;
 | 
						|
    _logger.tick();
 | 
						|
  }
 | 
						|
 | 
						|
  void reset() {
 | 
						|
    _logger.log('-- reset --');
 | 
						|
    value = 0;
 | 
						|
    _logger.tick();
 | 
						|
  }
 | 
						|
}
 |