Как мне написать эффекты для действий в ngrx / data? - PullRequest
1 голос
/ 06 мая 2020

Я работаю в проекте с ngrx, а также использую другие библиотеки и пакеты от ngrx, такие как ngrx / entity или ngrx / data.

Иногда мне нужно создавать эффекты в определенных действиях принадлежащих (с точки зрения отправки) к ngrx / data.

Там, где я нахожу некоторые трудности, это отправка других действий с сильной зависимостью от некоторых других действий, отправляемых ngrx / data автоматически c способом или даже мной (настраиваемым), как показано ниже

...

    @Injectable()
    export class FooEffects {

        fooSelected$ = createEffect(() =>
            this.actions$
                .pipe(
                    ofType(FooActions.fooSelected),
                    map((action) => this.entityActionFactory.create<Foo>('Foo', EntityOp.QUERY_LOAD),
                  ))
);
       ...

        constructor(private actions$: Actions, private entityActionFactory: EntityActionFactory) { }

    }

...

Итак, как мне прослушивать Действия в ngrx / data, такие как QUERY_LOAD, общий get / all или любой другой, чтобы добиться создания новые эффекты? Существует ли что-то вроде

fooNgrxDataEffectForQueryLoad$ = createEffect(() =>
            this.actions$
                .pipe(
                    ofType(('Foo', EntityOp.QUERY_LOAD)),

Или спросили по-другому, как мне написать эффекты для действий « NATIVE » в ngrx / data ?

Я знаю, что ngrx / data был создан, чтобы избавиться от действий, селекторов, эффектов, редукторов, насколько это возможно, и, следовательно, иметь меньше шаблонов. Однако должен быть способ создавать эффекты из ngrx / data.

Заранее большое спасибо.

1 Ответ

0 голосов
/ 06 мая 2020

То, что у вас есть в вашем примере, является одним из возможных способов.

Вы должны прослушивать действия типа ngrx / data и вызывать нужные вам вещи. ngrx / data довольно сырой и имеет множество ограничений .

Они рекомендуют расширить базовые классы и изменить там поведение добавить новые действия / эффекты / reducers et c.

Было бы неплохо, если бы вы могли привести пример того, как вы хотите изменить поток.

...