【发布时间】:2017-10-18 00:35:06
【问题描述】:
我正在尝试在我的应用程序中设置无限滚动部分。为此,我使用this component 来处理滚动事件等。当滚动到达 div 的底部时,我正在调用一个函数来获取更多数据。到目前为止一切顺利。
为了让这个函数更有效率,我试图在调用之前等待几秒钟,并确保数据得到正确处理。为此,我一直在查看Angular website that showcases a wikipedia search 上显示的示例。
我的设置与文章中显示的类似,我的问题是当我调用 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);
}
从我所做的研究来看,这似乎是一个与应该返回 Observable (Type 'void' is not assignable to type 'ObservableInput<{}>') 这一事实有关的问题。但就我而言,我不确定是什么问题。
我正在合作:
- Angular 4.0.1
- TypeScript 2.2.2
- RxJS 5.2.0
【问题讨论】:
-
你要回
Observable有什么问题? -
直到现在我不确定我需要返回什么......我相信所有代码都会在
Subject被触发时起作用,所以我不明白在哪里我应该返回Observable -
.switchMap(data => { return Observable.of(null) })别忘了import 'rxjs/add/observable/of';但它只是存根。我假设您想获得真正的可观察性 -
嗯,我觉得有点愚蠢...一直在尝试类似的东西..一定忽略了一些东西-_-非常感谢!我想我会设法让它工作 - 可能需要几杯咖啡..再次感谢!
-
我想知道使用
.switchMap(data => { return Observable.of(null) })有什么意义。看起来您根本不需要使用switchMap。
标签: angular typescript rxjs rxjs5