Rxjs создают наблюдаемые на основе другого - PullRequest
0 голосов
/ 25 июня 2018

Вот код:

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. Понятия не имею, почему.Как мне создать наблюдаемое, которое, когда первое издает, оно возвращает, и наблюдаемое, которое основано на первом наблюдаемом?

1 Ответ

0 голосов
/ 25 июня 2018

Если 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)

Используя intellisense, вы должны увидеть, что Typescript сообщает вам, что метод getActiveUserShares возвращает Observable<UserTeamShare[]>, а переменная data имеет тип UserTeamShare[].

В этом случае вы сможете работать с data так же, как и с любым массивом UserTeamShare экземпляров. Если это не так, то это означает, что this.provider.getUserShares(user.id) не возвращает Observable<UserTeamShare[]>.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...