35 lines
		
	
	
		
			833 B
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			35 lines
		
	
	
		
			833 B
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
// #docregion
 | 
						|
import { Component } from '@angular/core';
 | 
						|
import { Observable } from 'rxjs/Rx';
 | 
						|
 | 
						|
@Component({
 | 
						|
  selector: 'hero-message',
 | 
						|
  template: `
 | 
						|
    <h2>Async Hero Message and AsyncPipe</h2>
 | 
						|
    <p>Message: {{ message$ | async }}</p>
 | 
						|
    <button (click)="resend()">Resend</button>`,
 | 
						|
})
 | 
						|
export class HeroAsyncMessageComponent {
 | 
						|
  message$: Observable<string>;
 | 
						|
 | 
						|
  private messages = [
 | 
						|
    'You are my hero!',
 | 
						|
    'You are the best hero!',
 | 
						|
    'Will you be my hero?'
 | 
						|
  ];
 | 
						|
 | 
						|
  constructor() { this.resend(); }
 | 
						|
 | 
						|
  resend() {
 | 
						|
    this.message$ = Observable.interval(500)
 | 
						|
      .map(i => this.messages[i])
 | 
						|
      .take(this.messages.length);
 | 
						|
  }
 | 
						|
}
 | 
						|
// #enddocregion
 | 
						|
 | 
						|
// Alternative message$ formula:
 | 
						|
// this.message$ = Observable.fromArray(this.messages)
 | 
						|
//   .map(message => Observable.timer(500).map(() => message))
 | 
						|
//   .concatAll();
 |