NgRx отправил недопустимое действие

Проблема здесь в основном из-за ofType (). У меня есть простое действие, когда пользователь отправляет тип, затем запрос отправляется на бэкэнд, в качестве ответа он вернет массив объекта, который будет передан как новое отправленное действие. Проблема в том, что в новой версии ngrx нет возможности указать ofType () действий $, потому что сначала нам нужно использовать pipe (), чтобы карты не обрабатывались в одном типе ...

Вот моя реализация:

@Effect()
    getGrades = this.actions$
    .pipe(
      ofType(StudentActions.TRY_SET_SUBJECTS),
      mergeMap((action: StudentActions.TrySetSubjects) => {
        const id = action.payload.id;
        return this.httpClient.get(`http://localhost:8080/api/v1/student/${id}/grades`)

      }),
      map((response: any[])  => {
        console.log('StudentEffects -> getGrades')
        const subjects: Subject[] = response

        return [
          new StudentActions.SetSubjects(subjects)
        ]
      })
    );

Вот как это будет работать с предыдущими версиями:

@Effect()
    getGrades = this.actions$
    .ofType(StudentActions.TRY_SET_SUBJECTS)
    .pipe(
      mergeMap((action: StudentActions.TrySetSubjects) => {
        const id = action.payload.id;
        return this.httpClient.get(`http://localhost:8080/api/v1/student/${id}/grades`)

      }),
      map((response: any[])  => {
        console.log('StudentEffects -> getGrades')

        const subjects: Subject[] = response

        return [
          new StudentActions.SetSubjects(subjects)
        ]
      })
    );

Как можно обрабатывать ответ и отправлять новые StudentActions.SetSubjects (темы) с новой версией?

Любой намек будет полезен, заранее спасибо.

РЕДАКТИРОВАТЬ

Собственно возникла проблема с картами. Сначала я использовал mergeMap, а затем просто карту. Я изменил его на mergeMap и их concatMap. Не уверен, что concatMap - хороший выбор, но он ждет, пока не закончится предыдущая подписка, так что это звучит как хороший выбор. Все нормально работает.


person Mateusz Gebroski    schedule 25.03.2019    source источник
comment
ваша реализация верна. ofType по-прежнему сможет определять правильный тип действия. что именно не работает должным образом?   -  person jahller    schedule 25.03.2019
comment
Все нормально до возврата новых StudentActions.SetSubjects (предметов). Он вызовет отправленное исключение недопустимого действия, но если эффект содержит только одну карту, он будет успешно возвращен.   -  person Mateusz Gebroski    schedule 25.03.2019


Ответы (1)


Это то, что вы ищете?

введите здесь описание изображения

person timdeschryver    schedule 25.03.2019