2015-11-13 14:47:42 +00:00
|
|
|
// #docregion
|
2016-06-08 01:06:25 +02:00
|
|
|
import { Component, Input, OnDestroy, OnInit } from '@angular/core';
|
2015-11-13 14:47:42 +00:00
|
|
|
|
|
|
|
let nextId = 1;
|
|
|
|
|
|
|
|
@Component({
|
|
|
|
selector: 'heavy-loader',
|
|
|
|
template: '<span>heavy loader #{{id}} on duty!</span>'
|
|
|
|
})
|
2016-06-08 01:06:25 +02:00
|
|
|
export class HeavyLoaderComponent implements OnDestroy, OnInit {
|
2015-11-13 14:47:42 +00:00
|
|
|
id = nextId++;
|
|
|
|
@Input() logs: string[];
|
|
|
|
|
|
|
|
ngOnInit() {
|
|
|
|
// Mock todo: get 10,000 rows of data from the server
|
2016-05-03 14:06:32 +02:00
|
|
|
this.log(`heavy-loader ${this.id} initialized,
|
2015-11-13 14:47:42 +00:00
|
|
|
loading 10,000 rows of data from the server`);
|
|
|
|
}
|
|
|
|
|
|
|
|
ngOnDestroy() {
|
|
|
|
// Mock todo: clean-up
|
2016-05-03 14:06:32 +02:00
|
|
|
this.log(`heavy-loader ${this.id} destroyed, cleaning up`);
|
2015-11-13 14:47:42 +00:00
|
|
|
}
|
|
|
|
|
2016-05-03 14:06:32 +02:00
|
|
|
private log(msg: string) {
|
2015-11-13 14:47:42 +00:00
|
|
|
this.logs.push(msg);
|
2016-05-03 14:06:32 +02:00
|
|
|
this.tick();
|
2015-11-13 14:47:42 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
// Triggers the next round of Angular change detection
|
2016-01-15 21:15:21 -02:00
|
|
|
// after one turn of the browser event loop
|
2015-11-13 14:47:42 +00:00
|
|
|
// ensuring display of msg added in onDestroy
|
2016-05-03 14:06:32 +02:00
|
|
|
private tick() { setTimeout(() => { }, 0); }
|
2015-11-13 14:47:42 +00:00
|
|
|
}
|
|
|
|
// #enddocregion
|