Я пытаюсь перенести приложение Angular 5 на Angular 6, и у меня есть один блок кода RxJS, который поставил меня в тупик.Я прогуглил и прочитал документы RxJS достаточно, чтобы знать, что я должен использовать .pipe, но не могу получить синтаксис.
Код возвращает результаты вызова API, когда пользователь вводит вполе ввода поиска.В настоящее время новая версия выдает ошибку:
ERROR TypeError: Cannot read property 'call' of undefined
at merge.js:8
at MapSubscriber.project (switchMap.js:9)
Оригинальный код:
this.searchResults =
this.form.controls['search'].valueChanges
.debounceTime(200)
.switchMap(query => this.search.searchPeople(query))
.merge(this.clearSearch.mapTo([]));
Новая версия:
this.searchResults = this.form.controls['search'].valueChanges.pipe(
debounceTime(200),
switchMap(query => this.search.searchPeople(String(query)),
merge(this.clearSearch.pipe(mapTo([])))));
Я импортировал RxJS следующим образом:
import { Observable } from 'rxjs';
import { Subject } from 'rxjs';
import { debounceTime } from 'rxjs/operators';
import { mapTo } from 'rxjs/operators';
import { merge } from 'rxjs/operators';
import { switchMap } from 'rxjs/operators';