首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用RxJS时出现Angular 6错误:无法读取未定义的属性'call‘

使用RxJS时出现Angular 6错误:无法读取未定义的属性'call‘
EN

Stack Overflow用户
提问于 2018-08-26 16:12:37
回答 1查看 562关注 0票数 2

我正在尝试将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';
EN

回答 1

Stack Overflow用户

发布于 2018-08-27 01:58:44

@martin是正确的,这段代码没有任何错误。

问题是从API调用返回的格式稍有变化。它已经被格式化为数组,所以我只需要删除最后一行,因为不再需要mapTo:

// merge(this.clearSearch.pipe(mapTo([])))));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52024413

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档