我试图在我的应用程序中拥有无限滚动部分。为了实现这一目标,我正在使用该组件 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:
根据我所做的研究,这似乎是一个与应该返回 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(使用前将#替换为@)