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上订阅,切换到一个答案,以向您提供更多详细信息,即使不幸的是,这不是一个真正的答案