Angular 2 - RxJS 切换映射问题

2024-01-06

我试图在我的应用程序中拥有无限滚动部分。为了实现这一目标,我正在使用该组件 https://www.npmjs.com/package/angular2-perfect-scrollbar处理滚动事件等。当滚动到达 div 底部时,我将调用一个函数来获取更多数据。到目前为止,一切都很好。

为了使这个函数更有效,我尝试在调用之前等待几秒钟,并确保数据得到正确处理。为此,我一直在查看上显示的示例展示维基百科搜索的 Angular 网站 https://angular.io/docs/ts/latest/guide/server-communication.html#!#listen-for-search-terms.

我的设置与文章中显示的类似,我的问题是当我调用时出现以下错误switchMap():

Type 'void' is not assignable to type 'ObservableInput<{}>'

这是我的代码示例:

private scrollEndActive: Subject<boolean> = new Subject<boolean>();

ngOnInit() {
    ...
    this.scrollEndActive
        .debounceTime(1000)
        .distinctUntilChanged()
        .switchMap(data => {
            // ... get data from server
        })
}

...

// event to trigger call to server
scrollEnd() {
    this.scrollEndActive.next(true);
}

With the code above this is what I'm getting:enter image description here

根据我所做的研究,这似乎是一个与应该返回 Observable (类型“void”不可分配给类型“ObservableInput” https://stackoverflow.com/questions/43115390/type-void-is-not-assignable-to-type-observableinput)。但就我而言,我不确定问题是什么。

我正在与:

  • 角度 4.0.1
  • 打字稿 2.2.2
  • RxJS 5.2.0

默认情况下,箭头函数() => {...}有返回类型void除非你退回东西。

如果你想使用switchMap不返回任何内容,你可以按照 yurzui 在评论中所说的那样,return Observable.empty().

话虽这么说,如果你在你的switchMap,这意味着你不需要switchMap你可以直接使用do运算符,在不修改返回数据的情况下执行操作。或者mergeMap这允许你从原始 Observable 获得的数据中返回一个新的 Observable。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Angular 2 - RxJS 切换映射问题 的相关文章

  • 使用许多嵌套的 switchMap 是不好的做法吗?

    我有 HTTP 拦截器 在该拦截器中 在更改请求之前 我需要打开一个加载程序 真正让我担心的是我最终会得到很多switchMaps why 加载器是异步的 我还需要将从拦截器传递的消息转换为加载器服务 翻译消息也是异步的 在拦截器中 我应该
  • 组件没有路由配置 - 嵌套路由 angular2 RC1

    我有嵌套路线 Routes path component RootComponent path parent component ParentComponent 二级路由有参数 Routes path id component ChildC
  • 基于字符串的动态返回类型

    是否可以将字符串传递给函数并分配返回的动态类型 class MyService aMethod arg console log arg Container register my service MyService Internally C
  • Angular 6 HTTP 客户端发布 - 错误请求

    我有以下问题 我有一个 API 所在的服务器 我将请求发送到注册端点 但作为响应 我收到 400 错误请求错误 指出必须填写姓名 电子邮件等 问题是它们已经满了 我不再怀念创意了 我的代码 import Component from ang
  • 如何在 Angular 2 Material Autocomplete 中获取所选项目的值

    我使用 Angular Material 创建了一个自动完成字段 并成功从 Web api 获取国家 地区列表 CountryID gt 项目值 或索引 国家 地区 gt 项目文本 当我尝试获取所选项目的值 而不是文本 时 它会按预期返回文
  • 使用 karma-jasmine 和 istanbul 的 Typescript 代码覆盖率

    我正在尝试使用伊斯坦布尔在业力框架中获取我的打字稿代码的代码覆盖率 在 karma conf 中包含 typescript 文件 通过 karma typescript preprocessor 我们能够对 typescript 代码进行单
  • 从 Angular 6 服务中绑定图像

    我有一个端点 它根据某些参数为我提供图像 这不是一个图像网址 而是一个普通图像 因此 当我到达邮递员中的端点时 作为响应 我收到一张图像 JPG 我是否可以在变量中接收该图像并将其绑定到 HTML 标签中 所有问题都有将图像 url 映射到
  • TypeScript 中类和命名空间的区别

    到底有什么区别classes and namespaces在打字稿中 我知道 如果您创建一个带有静态方法的类 您可以在不实例化该类的情况下访问它们 这正是我猜想的命名空间的要点之一 我还知道你可以创建多个同名的命名空间 并且它们的方法在编译
  • “.builders['browser']”应该具有必需的属性“class”

    使用 npm install 成功安装依赖项后 在运行服务器时出现以下错误 Schema validation failed with the following errors Data path builders browser shou
  • 传单 - 导入 Geojson - Angular 6

    我尝试将 GeoJson 文件导入到 Angular 的应用程序 6 中的传单中 通过这个解决方案 我的 geojson 是在 leafletmap 中绘制的 但我有这个错误 我无法构建我的应用程序 有人知道一种解决方案吗 错误 TS234
  • router.navigate 使用查询参数 Angular 5

    我在使用查询参数路由到路由时遇到问题我有一个像这样的函数 goToLink link this router navigate link split 0 queryParams this sortParams link 和这个功能 sort
  • 如何将数组数据作为formdata Angular 4发送

    我尝试发布一组数据未发送到服务器 网络服务 deleteCategory return this http post http www demo webapi deletecategory headers Authorization Tok
  • Typescript 数组文字语法的差异

    Typescript 允许使用以下任一语法定义数组 var myStrArry1 string or var myStrArry1 Array
  • 如何使用 Angular 5 在单击按钮时调用多个方法?

    我正在使用 Angular 5 并面临问题 我想提交 点击 事件并一一调用两个或多个方法 请给我想法或解决方案 以便我可以提交 点击 事件并调用两个或多个方法 such as html 文件
  • 定义文件:属性的多种可能类型

    我正在为现有的 JS 库 CKEditor 编写一些定义 是否可以更具体toolbar any 文档 工具栏 数组 字符串 工具箱 别名工具栏 定义 它是工具栏名称或 工具栏 条 数组 每个工具栏也是一个数组 包含一个 UI 项目列表 库代
  • ionic 2 google 图表未捕获类型错误:(void 0) 不是函数

    error 我想添加谷歌图表并按照这个https www npmjs com package angular2 google chart https www npmjs com package angular2 google chart 但
  • 如何按顺序使用 RxJS 可观察量?

    事情是这样的 我有一个 HTTP get 请求 它返回一个 JSON 对象列表 我使用 RxJS 订阅接收该列表的数据 现在 对于该列表中的每个对象 我想执行另一个 HTTP 请求 然后将该请求的结果放入数组中 到目前为止 我已经能够做到这
  • LINQ SingleOrDefault() 等效项

    在 Typescript 中 我经常使用这种模式 class Vegetable constructor public id number public name string var vegetable array new Array
  • 使用 System.js 导入 Typescript 编译的模块时出错

    我最近正在学习使用 system js 导入由 Typescript 编译的模块 这些模块之前是为 require js 编译的 并且工作正常 但是合并到system js时 应用时无法导入模块系统生产 js 控制台说 Uncaught i
  • 在 Angular 中导入和使用 lodash 的正确方法

    我曾经能够通过如下所示的 import 语句在 Angular 中使用 lodash 方法 import debounce as debounce from lodash 我现在在使用该语句时收到以下错误 node modules type

随机推荐

  • python 如何打印压缩文件的百分比

    我想获取压缩文件时的百分比 例如它会打印 1 2 3 等 我不知道从哪里开始 我现在只有压缩文件的代码 该怎么做呢 Code zipPath zipfile ZipFile Files Zip pic zip w for root dirs
  • JavaScript域从子域读取cookie

    我有一个简单的问题 有没有办法通过 JavaScript 读取主域上的子域 cookie 例如 我在子域 yes something com 中设置了值为 2 的 cookie hello 之后我想在 Something com 上读取它
  • 如何在android中使用GSON解析以下JSON?

    As keysArray A B C 是dynamic and cores具有相同的对象名称 请帮忙 result success keysArray A B C D E cores A key value B key value C ke
  • Appium:在开始 appium-testng 测试运行之前,如何使用 java 在 aws device farm 设备上以编程方式创建 google 帐户

    我想在 aws 设备场上运行我的自动化 Android 套件测试用例 大部分脚本是使用 gmail 登录创建的 在实时设备上 可以手动配置 Gmail 帐户 因此每当脚本运行时 都会弹出已配置的 Gmail 帐户以供登录 但对于 aws 设
  • Pycharm:通过鼠标悬停启用变量/名称/标记的工具提示?

    我正在寻找类似于 Visual Studio 将鼠标悬停在编辑器中的任何内容 类型信息 方法详细信息 其他有用信息等 上时显示工具提示的方式 这是 PyCharm 中的可配置选项吗 我还没有找到它 Thanks 仅可通过快速文档热键使用 对
  • 错误:eglSurfaceAttrib 未实现

    我正在尝试使用 aChartEngine 显示折线图 但是 页面显示为空白 并且我收到错误 eglSurfaceAttrib 未实现 进度 显示 页面代码
  • 如何比较批处理文件中的两个文件?

    如何比较批处理文件中的两个文件 并根据它们是否匹配执行操作 我尝试过类似的事情 if file1 txt NEQ file2 txt goto label 但它比较实际的字符串 file1 txt 而不是文件 我读过有关 COMP 命令的内
  • 我应该何时保存 Windows Phone 7 上的设置?

    我有一个调用的设置保存方法 但我尝试卸载 并且失去焦点 应用程序将关闭并且在使用这两种方法之前不会保存 我应该什么时候保存应用程序设置以避免这种情况发生 我应该使用计时器并每 30 秒保存一次 还是什么 您保存的频率取决于您的应用程序 然而
  • 创建 MySQL 表时出现语法错误

    也许我太习惯 Postgres 但为什么我会收到此错误 您的 SQL 语法有错误 检查手册 与您的 MySQL 服务器版本相对应 以便使用正确的语法 靠近 id int not null AUTO INCRMENT 电子邮件 varchar
  • Gradle 可以按特定顺序运行两个测试吗?

    我们正在将一些 ant 构建脚本迁移到 gradle 并在此过程中诊断问题 出现的一个问题是 在 CI 服务器 运行 gradle 的 jenkins 上 我们偶尔会遇到测试失败的情况 我们认为该问题与测试执行顺序有关 因为失败的测试之一在
  • 增强线程池

    我的应用程序需要一个线程池 并且我想尽可能依赖标准 C 11 或 boost 的东西 我意识到有一个非官方的 boost线程池类 它基本上解决了我所需要的 但是我宁愿避免它 因为它不在boost库本身中 为什么它仍然不在核心库中很多年 在此
  • 将 python 的默认版本从 32 位更改为 64 位

    我正在尝试将默认的 python exe 从 32 位切换到 64 位 我第一次下载并安装 python 时 我下载的是 32 位版本 后来我在我目前正在进行的项目中发现 我需要 64 位版本的 python 才能使所有内容兼容 我已经卸载
  • 使用 sscanf 解析文本文件的整数和浮点值

    我想将包含这些字段的文件解析为整数和浮点变量 我尝试使用 fscanf strtok sscanf 来执行此操作 但它们都不起作用 文件的一些行 fed18 5 7 12 7 144997 8087 267345 100776 fedora
  • 删除数组中的元素而不对索引进行硬编码?在斯威夫特

    这是我的第一篇文章 我很高兴加入这个社区 我正在通过 Ray Wenderlich 的视频教程学习 Swift 我在第 3 课中遇到的挑战是删除数组中的元素而不对索引进行硬编码 我理解雷提供的正确答案 但只是不明白为什么我的答案不起作用 请
  • 使用 Docker Centos 7.5 映像运行 GitLab CI 管道时,ChromeHeadless 超时

    因此 我尝试使用 GitLab CI 管道在 Centos 7 5 的 docker 映像上运行 Angular 6 应用程序的 Karma 测试 问题是 30 08 2018 07 09 55 222 WARN 启动器 ChromeHea
  • iPhone - 同时启动 AVAudioPlayer 的多个实例

    我正在使用 AVAudioPlayer 的多个实例同时播放多个音频文件 我运行一个循环来开始播放音频文件 预先调用 prepareToPlay 并且循环仅调用 play 方法 但不可避免的是 其中一名球员的比赛并不同步 如何确保所有 4 个
  • Javascript / jQuery 后退按钮 - 只要最后一页是当前网站的一部分?

    使用下面的代码 我可以制作一个 后退 按钮 但是有没有办法使链接要求最后一页是当前网站的一部分 document ready function a back click function parent history back return
  • 有没有办法以 Flutter 方式将 CSV 文件导入 Sqlite 数据库?

    我一直在寻找以 flutter 方式将 csv 导入数据库 但不幸的是 我找不到与此案例相关的文章 所以我想知道是否有办法将csv导入数据库 如果是 我怎样才能实现这一目标 对于我的情况 我打开文件选择器并想要导入 csv 文件 我可以轻松
  • 使用 strptime 将字符串转换为时间但得到垃圾

    我在 C 中使用 strptime 函数时遇到问题 我在 stackoverflow 中找到了一段代码 如下所示 我想在 struct tm 上存储字符串时间信息 虽然我应该获得有关 tm tm year 变量的年份信息 但我总是得到垃圾
  • Angular 2 - RxJS 切换映射问题

    我试图在我的应用程序中拥有无限滚动部分 为了实现这一目标 我正在使用该组件 https www npmjs com package angular2 perfect scrollbar处理滚动事件等 当滚动到达 div 底部时 我将调用一个