加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Angular 2 rxjs switchmap返回Observable

发布时间:2020-12-17 17:07:34 所属栏目:安全 来源:网络整理
导读:我正在构建一个typescript angular 2应用程序并使用rxjs.我在这里关注这个例子: https://angular.io/docs/ts/latest/tutorial/toh-pt6.html#!#stq=formgroupstp=1 虽然我试图用打字稿强力键入我的返回签名.这可能是我的问题,因为你不应该这样做.但似乎你应
我正在构建一个typescript angular 2应用程序并使用rxjs.我在这里关注这个例子:

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>>
        });
  }

这不会编译消息无法转换类型Observable< Object>输入Observable< MyModel []>>

我不明白为什么switchmap返回一个Observable而不是我的类型.在将其提供给结果之前,是否需要再次映射?这是switchmap返回签名??的打字稿问题吗?

解决方法

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

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

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

如果这不起作用,则“妥协”将结果变量的类型更改为:

results: Observable<any>;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读