| 
									
										
										
										
											2016-03-07 11:50:14 -08:00
										 |  |  | // #docplaster
 | 
					
						
							|  |  |  | // #docregion vc
 | 
					
						
							| 
									
										
										
										
											2016-05-03 14:06:32 +02:00
										 |  |  | import { AfterViewInit, ViewChild } from '@angular/core'; | 
					
						
							| 
									
										
										
										
											2016-03-07 11:50:14 -08:00
										 |  |  | // #docregion lv
 | 
					
						
							| 
									
										
										
										
											2016-05-03 14:06:32 +02:00
										 |  |  | import { Component }                from '@angular/core'; | 
					
						
							|  |  |  | import { CountdownTimerComponent }  from './countdown-timer.component'; | 
					
						
							| 
									
										
										
										
											2016-02-02 14:39:34 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-03-07 11:50:14 -08:00
										 |  |  | // #enddocregion lv
 | 
					
						
							|  |  |  | // #enddocregion vc
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | //// Local variable, #timer, version
 | 
					
						
							|  |  |  | // #docregion lv
 | 
					
						
							|  |  |  | @Component({ | 
					
						
							| 
									
										
										
										
											2016-06-08 01:06:25 +02:00
										 |  |  |   selector: 'countdown-parent-lv', | 
					
						
							| 
									
										
										
										
											2016-03-07 11:50:14 -08:00
										 |  |  |   template: `
 | 
					
						
							|  |  |  |   <h3>Countdown to Liftoff (via local variable)</h3> | 
					
						
							|  |  |  |   <button (click)="timer.start()">Start</button> | 
					
						
							|  |  |  |   <button (click)="timer.stop()">Stop</button> | 
					
						
							|  |  |  |   <div class="seconds">{{timer.seconds}}</div> | 
					
						
							|  |  |  |   <countdown-timer #timer></countdown-timer> | 
					
						
							|  |  |  |   `,
 | 
					
						
							|  |  |  |   styleUrls: ['demo.css'] | 
					
						
							|  |  |  | }) | 
					
						
							|  |  |  | export class CountdownLocalVarParentComponent { } | 
					
						
							|  |  |  | // #enddocregion lv
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | //// View Child version
 | 
					
						
							|  |  |  | // #docregion vc
 | 
					
						
							| 
									
										
										
										
											2016-02-02 14:39:34 +01:00
										 |  |  | @Component({ | 
					
						
							| 
									
										
										
										
											2016-06-08 01:06:25 +02:00
										 |  |  |   selector: 'countdown-parent-vc', | 
					
						
							| 
									
										
										
										
											2016-02-02 14:39:34 +01:00
										 |  |  |   template: `
 | 
					
						
							| 
									
										
										
										
											2016-03-07 11:50:14 -08:00
										 |  |  |   <h3>Countdown to Liftoff (via ViewChild)</h3> | 
					
						
							| 
									
										
										
										
											2016-02-02 14:39:34 +01:00
										 |  |  |   <button (click)="start()">Start</button> | 
					
						
							|  |  |  |   <button (click)="stop()">Stop</button> | 
					
						
							| 
									
										
										
										
											2016-03-07 11:50:14 -08:00
										 |  |  |   <div class="seconds">{{ seconds() }}</div> | 
					
						
							| 
									
										
										
										
											2016-02-02 14:39:34 +01:00
										 |  |  |   <countdown-timer></countdown-timer> | 
					
						
							|  |  |  |   `,
 | 
					
						
							| 
									
										
										
										
											2016-03-07 11:50:14 -08:00
										 |  |  |   styleUrls: ['demo.css'] | 
					
						
							| 
									
										
										
										
											2016-02-02 14:39:34 +01:00
										 |  |  | }) | 
					
						
							| 
									
										
										
										
											2016-03-07 11:50:14 -08:00
										 |  |  | export class CountdownViewChildParentComponent implements AfterViewInit { | 
					
						
							| 
									
										
										
										
											2016-02-02 14:39:34 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |   @ViewChild(CountdownTimerComponent) | 
					
						
							| 
									
										
										
										
											2016-06-08 01:06:25 +02:00
										 |  |  |   private timerComponent: CountdownTimerComponent; | 
					
						
							| 
									
										
										
										
											2016-02-02 14:39:34 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-03-07 11:50:14 -08:00
										 |  |  |   seconds() { return 0; } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   ngAfterViewInit() { | 
					
						
							|  |  |  |     // Redefine `seconds()` to get from the `CountdownTimerComponent.seconds` ...
 | 
					
						
							|  |  |  |     // but wait a tick first to avoid one-time devMode
 | 
					
						
							|  |  |  |     // unidirectional-data-flow-violation error
 | 
					
						
							| 
									
										
										
										
											2016-06-08 01:06:25 +02:00
										 |  |  |     setTimeout(() => this.seconds = () => this.timerComponent.seconds, 0); | 
					
						
							| 
									
										
										
										
											2016-03-07 11:50:14 -08:00
										 |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-06-08 01:06:25 +02:00
										 |  |  |   start() { this.timerComponent.start(); } | 
					
						
							| 
									
										
										
										
											2016-05-03 14:06:32 +02:00
										 |  |  |   stop() { this.timerComponent.stop(); } | 
					
						
							| 
									
										
										
										
											2016-03-07 11:50:14 -08:00
										 |  |  | } | 
					
						
							|  |  |  | // #enddocregion vc
 |