源码之家

  • 首页
  • 文章
  • 问答
  • 下载
您的位置: 首页  >  技术问答  >  Angular 2 rxjs switchmap returns Observable

Angular 2 rxjs switchmap returns Observable
分类: 技术问答 • 2022-04-25 13:45:01

Angular 2 rxjs switchmap returns Observable <Object>

问题描述:

我正在构建打字稿角度2应用程序并使用rxjs。我在这里继例如:Angular 2 rxjs switchmap returns Observable <Object>

https://angular.io/docs/ts/latest/tutorial/toh-pt6.html#!#stq=formgroup&stp=1

全部虽然我试图以打字稿强类型我返回签名。这可能是我的问题,因为你不应该这样做。但似乎你应该能够。

假设我有键入的服务返回一个Observable>。

public search(term: string) : Observable<Array<MyModel>> { // http call } 

在我的组件中,我试图听这个可观察的流并返回结果。

private search = new Subject<Search>(); 
results: Observable<Array<MyModel>>; 

ngOnInit() { 
    this.results = this.search 
     .debounceTime(400) 
     .distinctUntilChanged() 
     .switchMap(search => { 
      return service.search(search.term); // returns Observable<Array<MyModel>> 
     }); 
    } 

这并不与消息Cannot convert type Observable<Object> to type Observable<MyModel[]>>

我不明白为什么switchmap正在恢复,而不是我喜欢的类型可观察到的编译。在给出结果之前,我是否需要重新映射它?这是与switchmap的返回签名的打字稿类型问题?

+2

我认为你需要的只是一个演员。 – Andrew

+0

我曾尝试过,但无意中铸造了返回语句,而不是在属于演员的switchmap链的末尾。这是一个头脑不清的问题。谢谢! – twifosp

答

打字稿可能有错误的类型推断,我会尝试以下操作之一:

给你的处理程序返回类型:

.switchMap((search): Observable<Array<MyModel>> => { 
     return service.search(search.term); // returns Observable<Array<MyModel>> 
    }); 

,如果这也不行,“妥协”改变结果变量的类型为:

results: Observable<any>; 

答

错误消息其实是对的。但是,如果没有堆栈跟踪,哪条线路导致错误还不清楚。

在ngOnInit()方法调用:

this.results = this.search 
    .debounceTime(..) 
    ... 

运营商这条链总是返回Observable这是不一样的result属性需要(Observable<Array<MyModel>>),因为Subject的一般是Search。

运营商switchmap()总是返回Observable。它的返回类型与可调用函数无关。

您应该能够通过简单的类型转换的结果来解决这个问题:

this.results = Observable<MyModel[]>this.search 
    .debounceTime(..) 
    ... 

相关推荐

  • Angular 2 Service Observable Returns undefined
  • 如何在Angular中使用rxjs运算符加入Observable(angularfire2)
  • 在第一次后取消可观察 - Angular2,TypeScript,rxjs/Observable
  • Angular2 Observable Rxjs如何调用私有函数
  • 如何将订阅放入RxJS或Angular2中的Observable过滤器中?
  • Angular 2 rxjs switchmap returns Observable
  • Angular 2和RxJS:如何更改返回Observable的HTTP调用
  • Angular 2和RxJS 5 Observable.share()
  • 如何解决“Observable.share不是一个函数”Angular 2
  • Angular 2 to 4 - Rxjs Subject.d.ts中的错误
    • 网站免责声明 网站地图 最新文章 用户隐私 版权申明
    本站所有数据收集于网络,如果侵犯到您的权益,请联系网站进行下架处理。   

    Copyright © 2018-2021   Powered By 源码之家    备案号:   粤ICP备20058927号