import { Observable, Subject } from 'rxjs';
并在组件类中定义一个Subject:
private searchTerms = new Subject();
ngOnInit() {
this.filteredItems = this.searchTerms.pipe(
debounceTime(300),
distinctUntilChanged(),
switchMap((keyword: string) => this.itemService.searchItems(keyword))
);
}
search(term: string): void {
this.searchTerms.next(term);
}
- {{item.name}}
完整代码示例:
import { Component, OnInit } from '@angular/core';
import { Observable, Subject } from 'rxjs';
import { debounceTime, distinctUntilChanged, switchMap } from 'rxjs/operators';
import { ItemService } from './item.service';
import { Item } from './item.model';
@Component({
selector: 'app-item-list',
templateUrl: './item-list.component.html',
styleUrls: ['./item-list.component.css']
})
export class ItemListComponent implements OnInit {
keywords: string;
filteredItems: Observable- ;
private searchTerms = new Subject
();
constructor(private itemService: ItemService) { }
ngOnInit() {
this.filteredItems = this.searchTerms.pipe(
debounceTime(300),
distinctUntilChanged(),
switchMap((keyword: string) => this.itemService.searchItems(keyword))
);
}
search(term: string): void {
this.searchTerms.next(term);
}
}
- {{item.name}}