我正在尝试遵循这个example
但我不明白为什么它不能工作。以下是我的代码
import { Subject } from "rxjs/Subject";
import { Component, OnInit } from "@angular/core";
import { Observable } from "rxjs";
import {
SearchFullText,
SearchFullTextService,
} from "../search-full-text.service";
import { debounceTime, distinctUntilChanged, switchMap } from "rxjs/operators";
@Component({
selector: 'app-header',
templateUrl: './header.component.html',
styleUrls: ['./header.component.scss']
})
export class HeaderComponent implements OnInit {
persons$: Observable<SearchFullText[]>;
private searchValues = new Subject<string>();
constructor(private searchService: SearchFullTextService) {}
// Push a search term into the observable stream.
search(searchValue: string): void {
this.searchValues.next(searchValue);
}
ngOnInit(): void {
this.persons$ = this.searchValues.pipe(
// wait 300ms after each keystroke before considering the term
debounceTime(300),
// ignore new term if same as previous term
distinctUntilChanged(),
// switch to new search observable each time the term changes
switchMap((searchValue: string) => {
console.log("switchMap");
return this.searchService.searchFullText(searchValue)
})
);
}
}switchMap未执行。我遗漏了什么?
发布于 2021-04-16 19:08:41
问题是你没有订阅你的switchMap observable.If,你订阅了它,你的代码就会执行:
switchMap((searchValue: string) => {
console.log("switchMap");
return this.searchService.searchFullText(searchValue)
}).subscribe(value => doSomething);https://stackoverflow.com/questions/67123702
复制相似问题