当前位置: 首页 > 知识库问答 >
问题:

角2-RxJS开关映射问题

易焱
2023-03-14

我试图在我的应用程序中有一个无限滚动的部分。为了实现这一点,我使用这个组件来处理滚动事件等等。当滚动到达div的底部时,我调用一个函数来获取更多数据。到现在为止,一直都还不错。

为了使这个函数更有效,我试图在调用之前等待几秒钟,并确保数据得到正确处理。为此,我一直在查看Angular网站上展示的维基百科搜索示例。

我有一个类似于本文所示的设置,我的问题是调用switchMap()时出现以下错误:

类型“void”不可分配给类型“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);
}

从我所做的研究来看,这似乎是一个与以下事实相关的问题:一个人应该返回可观察的(类型“void”不可分配给类型“observedinput”)

我正在和:

  • 角度4.0。1

共有2个答案

蔚琦
2023-03-14

我正在和:

  • 角5.1.0
  • TypeScript 2.5.3
  • RxJS 5.5.6

我也有同样的问题。我修复了将返回值放入switchMap的问题,因为您不能返回未定义的null值。但如果不能返回可观察的,可以返回一个空数组。

我必须解决一个可观察的链接,我这样解决:

resolve(): Observable<any> {
    return firstObservableFunc()
    .map(res => res)
    .switchMap(result => (result && result.value === 'OK') ? secondObservableFunc() : []);                        
}

琴俊人
2023-03-14

默认情况下,箭头函数()=

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

也就是说,如果您在SwitchMap中返回一个可观察到的空,这意味着您不需要SwitchMap,您可以直接使用do运算符,这不是一个不修改返回数据的操作。或者mergeMap,允许您从原始数据中返回一个新的可观察数据。

 类似资料:
  • 我有一个用KeyCloak保护的spring boot应用程序。领域中的每个用户都有我的资源(客户机)的角色。角色配置在用户选项卡上,对于角色映射选项卡下的特定用户,角色配置为客户端角色: 我还使用了与LDAP Active Directory的集成,所有用户都来自LDAP Active Directory。现在,如果我想为Active Directory(AD)组添加特定的角色,我必须进入Act

  • 我有一个简单的api请求,它向一个对象返回一个可观察的对象,该对象中有一组项,每个项中都有一个链接。因此,我想在当前异步流中直接获取链接后面的数据,但我收到一个CORS错误,错误是: 这是否可能与我当前的函数?还是我误解了一些基本概念?

  • 问题内容: 欢迎, Hibernate映射存在一些问题。 数据库结构: POJO结构: 我想拥有的是TableC Pojo映射中TableB元素的集合,映射键是tableA。 该集合应该是只读的。 映射应为hbm而非注释。 我可能已经以各种可能的方式完成了此操作…我遇到的关闭情况是,当我对一个TableC对象进行操作时,一切都是正确的,但是如果我加载它们的集合,则只有最后一个具有正确的集合集。 更

  • 我正在制作一个2人迷宫跑者游戏,我遇到了一些键盘事件的麻烦。如果两个玩家同时击中一个键,只有玩家1移动,因为我的代码首先测试的是Player1的事件。在python和pygame中是否有一种方法可以同时检查这两个事件?下面是我的player1课的一部分: 很抱歉出现了代码块,但这对您理解它是如何工作的都是必要的。我为Player2提供了一个几乎相同的类,但使用了不同的键盘控制(WASD而不是箭头键

  • 我犯了一个错误,比如: 我知道在堆栈溢出中已经出现了一些类似的问题,但解决方案对我来说并不适用。请您检查一下我的实体,以便找出到底是什么导致了这个问题? 使用者 组 角色 控制器方法 痕迹 /vendor/doctrine/orm/lib/Doctrine/ORM/UnitOfWork.php(2607):教义\ORM\实用程序\标识符Flattener- 解决了的! 该问题是由重新定义的方法引起

  • 我想把我的spring boot webapp和angular前端部署到tomact服务器上。我用angular cli和以下命令构建angular应用程序 该应用程序运行正常,但仍存在以下问题: 每次我都必须手动将base href标记更改为