| 
									
										
										
										
											2015-12-12 22:01:46 -08:00
										 |  |  | // #docregion
 | 
					
						
							| 
									
										
										
										
											2016-05-03 14:06:32 +02:00
										 |  |  | import { Component } from '@angular/core'; | 
					
						
							|  |  |  | import { Observable } from 'rxjs/Rx'; | 
					
						
							| 
									
										
										
										
											2015-12-12 22:01:46 -08:00
										 |  |  | 
 | 
					
						
							|  |  |  | @Component({ | 
					
						
							|  |  |  |   selector: 'hero-message', | 
					
						
							| 
									
										
										
										
											2016-01-13 15:00:43 -07:00
										 |  |  |   template: `
 | 
					
						
							|  |  |  |     <h2>Async Hero Message and AsyncPipe</h2> | 
					
						
							|  |  |  |     <p>Message: {{ message$ | async }}</p> | 
					
						
							|  |  |  |     <button (click)="resend()">Resend</button>`,
 | 
					
						
							| 
									
										
										
										
											2015-12-12 22:01:46 -08:00
										 |  |  | }) | 
					
						
							|  |  |  | export class HeroAsyncMessageComponent { | 
					
						
							| 
									
										
										
										
											2016-01-13 15:00:43 -07:00
										 |  |  |   message$:Observable<string>; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   constructor() { this.resend(); } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   resend() { | 
					
						
							|  |  |  |     this.message$ = Observable.interval(500) | 
					
						
							|  |  |  |       .map(i => this.messages[i]) | 
					
						
							|  |  |  |       .take(this.messages.length); | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   private messages = [ | 
					
						
							|  |  |  |     'You are my hero!', | 
					
						
							|  |  |  |     'You are the best hero!', | 
					
						
							|  |  |  |     'Will you be my hero?' | 
					
						
							|  |  |  |   ]; | 
					
						
							| 
									
										
										
										
											2015-12-12 22:01:46 -08:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2016-01-13 15:00:43 -07:00
										 |  |  | // #enddocregion
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // Alternative message$ formula:
 | 
					
						
							|  |  |  | // this.message$ = Observable.fromArray(this.messages)
 | 
					
						
							|  |  |  | //   .map(message => Observable.timer(500).map(() => message))
 | 
					
						
							|  |  |  | //   .concatAll();
 |