/* tslint:disable: member-ordering forin */ // #docplaster // #docregion import { Component, OnInit } from '@angular/core'; // #docregion rxjs-imports import { Observable } from 'rxjs/Observable'; import 'rxjs/add/operator/debounceTime'; import 'rxjs/add/operator/distinctUntilChanged'; import 'rxjs/add/operator/switchMap'; // #docregion import-subject import { Subject } from 'rxjs/Subject'; // #enddocregion import-subject import { WikipediaService } from './wikipedia.service'; @Component({ moduleId: module.id, selector: 'my-wiki-smart', template: `

Smarter Wikipedia Demo

Search when typing stops

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