// #docregion import { Component } from '@angular/core'; import { Observable } from 'rxjs/Observable'; // #docregion import-subject import { Subject } from 'rxjs/Subject'; // #enddocregion import-subject import { WikipediaService } from './wikipedia.service'; @Component({ selector: 'my-wiki-smart', template: `

Smarter Wikipedia Demo

Fetches when typing stops

`, providers: [WikipediaService] }) export class WikiSmartComponent { constructor (private wikipediaService: WikipediaService) { } // #docregion subject private searchTermStream = new Subject(); search(term: string) { this.searchTermStream.next(term); } // #enddocregion subject // #docregion observable-operators items: Observable = this.searchTermStream .debounceTime(300) .distinctUntilChanged() .switchMap((term: string) => this.wikipediaService.search(term)); // #enddocregion observable-operators }