将 Observable<B> 转换为对象 B

胜利者

我正在使用带有 RxJs 的 Angular 2。我得到以下编译异常,

[ts]
Type 'Observable<Observable<B>>' is not assignable to type 
'Observable<B>'.
  Type 'Observable<B>' is not assignable to type 'B'.
    Property 'id' is missing in type 'Observable<B>'.

下面是有问题的代码。我无法真正更改“getB”的方法签名,因为我要覆盖它。基本方法不需要第二个 API 调用来填充子项,因此被覆盖。

export interface A {
   b: B;
}

export class B {
   cList: C[];
}

export interface C {
   name: string;
   type: string;
}

getB(): Observable<B> {
   let entries = <A[]> []; // get A[] via an server call
   // in this case entries will have only one element in the array  
   return this.loadBChilds(entries[0])
     .map(e => e.b);
}

loadBChilds(a: A): Observable<A> {
   // API call to fetch childs
   // set childs to a.b.List
   return this.rest.get('someapi')
     .map(res => {
       res.record.map(r => this.setData(r));
       return a; 
     });
}

知道如何实现这一目标吗?

TIA

胜利者

设法解决了这个问题。修复方法是折叠通过 flatMap 从第一个 API 接收到的第一个数组,然后将其用于后续 API 调用。

getB(): Observable<B> {
   return this.rest.get('firstapi')
     .flatMap(res => {
         let entries = res.record
              .map(record => this.getEntry(record));
         return this.loadBChilds(entries[0])
          .map(e => e.b);
     });
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用RxJS将Observable [A列表]转换为Observable [B列表]

来自分类Dev

使用RxJS将Observable [A列表]转换为Observable [B列表]

来自分类Dev

将M [A => B]转换为A => M [B]

来自分类Dev

将'a,b'转换为'“ a”,“ b”'的PHP函数

来自分类Dev

将字符串“ {a:2,b:4}”转换为对象{a:2,b:4}

来自分类Dev

将list <A *>转换为list <B *>,其中B继承了A

来自分类Dev

JavaScript:将[a,b,c]转换为[a] [b] [c]

来自分类Dev

将(a-> IO b)转换为IO(a-> b)

来自分类Dev

如何将c(a,b)转换为table(a,b)的参数?

来自分类Dev

可以将A => List [B]转换为List [A => B]吗?

来自分类Dev

将list <A *>转换为list <B *>,其中B继承了A

来自分类Dev

RewriteRule将/ a / b转换为?x = a&y = b?

来自分类Dev

将'B'转换为0xB

来自分类Dev

将Task <A>异步转换为Task <B>

来自分类Dev

无法将BasicDBObject强制转换为[B

来自分类Dev

将列表<B>强制转换为列表<A>

来自分类Dev

将a(IO b)转换为IO(ab)

来自分类Dev

异步将Task <A>转换为Task <B>

来自分类Dev

将'B'转换为0xB

来自分类Dev

将List <A>转换为Map <B,List <A >>

来自分类Dev

将“a**b”替换为 pow(a,b)

来自分类Dev

将字节数组从编码A转换为编码B

来自分类常见问题

将Either [A,B]转换为Option [A],其中Left变为Some

来自分类Dev

如何将BezierCurve转换为B样条曲线?

来自分类Dev

将Lens'ab转换为Lens'a(也许b)

来自分类Dev

将xy转换为a / b,其中xy = a / bc#

来自分类Dev

将vec3b转换为mat

来自分类Dev

R,strptime(),%b,尝试将字符转换为日期格式

来自分类Dev

将Either [A,B]转换为Option [A],其中Left变为Some