36 lines
864 B
TypeScript
36 lines
864 B
TypeScript
// #docregion
|
|
import {Component, Input, Output} from '@angular/core';
|
|
|
|
let nextId = 1;
|
|
|
|
@Component({
|
|
selector: 'heavy-loader',
|
|
template: '<span>heavy loader #{{id}} on duty!</span>'
|
|
})
|
|
export class HeavyLoaderComponent {
|
|
id = nextId++;
|
|
@Input() logs: string[];
|
|
|
|
ngOnInit() {
|
|
// Mock todo: get 10,000 rows of data from the server
|
|
this._log(`heavy-loader ${this.id} initialized,
|
|
loading 10,000 rows of data from the server`);
|
|
}
|
|
|
|
ngOnDestroy() {
|
|
// Mock todo: clean-up
|
|
this._log(`heavy-loader ${this.id} destroyed, cleaning up`);
|
|
}
|
|
|
|
private _log(msg: string) {
|
|
this.logs.push(msg);
|
|
this._tick();
|
|
}
|
|
|
|
// Triggers the next round of Angular change detection
|
|
// after one turn of the browser event loop
|
|
// ensuring display of msg added in onDestroy
|
|
private _tick() { setTimeout(() => { }, 0); }
|
|
}
|
|
// #enddocregion
|