Ошибка Angular 6 при использовании RxJS: невозможно прочитать свойство 'call' из undefined - PullRequest
0 голосов
/ 26 августа 2018

Я пытаюсь перенести приложение 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';

1 Ответ

0 голосов
/ 26 августа 2018

@ martin был прав, с этим кодом все в порядке.

Проблема заключалась в том, что формат, возвращаемый после вызова API, немного изменился.Он уже был отформатирован как массив, поэтому мне просто пришлось удалить последнюю строку, поскольку mapTo больше не требовалось:

// merge(this.clearSearch.pipe(mapTo([])))));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...