Rxjs基于另一个对象创建可观察对象

Rxjs基于另一个对象创建可观察对象,rxjs,Rxjs,代码如下: getActiveUserShares(): Observable<UserTeamShare[]> { return this.userService .getActiveUser() .pipe(flatMap((user) => (user ? this.provider.getUserShares(user.id) : of([])))); } getActiveUserShares():可观察{ 返回此.userS

代码如下:

getActiveUserShares(): Observable<UserTeamShare[]> {
    return this.userService
        .getActiveUser()
        .pipe(flatMap((user) => (user ? this.provider.getUserShares(user.id) : of([]))));
}
getActiveUserShares():可观察{
返回此.userService
.getActiveUser()
.pipe(flatMap((用户)=>(用户?此.provider.getUserShares(用户id):of([]));
}
它抛出:

ERROR TypeError:您提供了一个无效的对象,其中应该有一个流。您可以提供一个可观察的、承诺的、数组的或可观察的。
不知道为什么。
我如何创建可观察对象,当第一件事发出时,它返回并基于第一个可观察对象的可观察对象?

如果
这个.provider.getUserShares(user.id)
返回一个
可观察对象
你应该将
UserTeamShare[]
作为
订阅
方法中定义的变量类型

例如,让我们考虑下面的代码

getActiveUserShares() {
    return this.userService
        .getActiveUser()
        .pipe(flatMap((user) => (user ? this.provider.getUserShares(user.id) : of([]))));
}

getActiveUserShares().submit(data => // do stuff with data)
使用intellisense,您应该看到Typescript告诉您方法
getActiveUserShares
返回一个
Observable
,而变量
data
的类型为
UserTeamShare[]


如果是这种情况,您应该能够像处理任何
UserTeamShare
实例数组一样处理
data
。事实并非如此,这意味着
this.provider.getUserShares(user.id)
不会返回可观察的

什么是
this.provider.getUserShares(user.id)
return?observesible执行此操作时,哪一行代码会引发错误。在itI上订阅,切换到一个答案,以向您提供更多详细信息,即使不幸的是,这不是一个真正的答案