| 
									
										
										
										
											2015-11-13 14:47:42 +00:00
										 |  |  | // #docregion
 | 
					
						
							| 
									
										
										
										
											2016-05-03 14:06:32 +02:00
										 |  |  | import { Component, Input, Output } 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>' | 
					
						
							|  |  |  | }) | 
					
						
							|  |  |  | export class HeavyLoaderComponent { | 
					
						
							|  |  |  |   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
 |