代码如下:
getActiveUserShares(): Observable<UserTeamShare[]> {
return this.userService
.getActiveUser()
.pipe(flatMap((user) => (user ? this.provider.getUserShares(user.id) : of([]))));
}
它抛出:
ERROR TypeError: You provided an invalid object where a stream was expected. You can provide an Observable, Promise, Array, or Iterable.
不知道为什么。
如何创建可观察到的东西,当第一件事发出时返回并基于第一个可观察到的东西?
答案 0 :(得分:0)
如果this.provider.getUserShares(user.id)
返回一个Observable<UserTeamShare[]>
,则应将UserTeamShare[]
作为subscription
方法中定义的变量的类型。
例如,让我们考虑以下代码
getActiveUserShares() {
return this.userService
.getActiveUser()
.pipe(flatMap((user) => (user ? this.provider.getUserShares(user.id) : of([]))));
}
getActiveUserShares().submit(data => // do stuff with data)
使用智能感知,您应该看到Typescript告诉您getActiveUserShares
方法返回Observable<UserTeamShare[]>
,而变量data
的类型为UserTeamShare[]
。
在这种情况下,您应该可以像使用data
实例数组那样使用UserTeamShare
进行操作。并非如此,这意味着this.provider.getUserShares(user.id)
不返回Observable<UserTeamShare[]>
。