如果操作是从另一个模块分派的,则ngrx效果不会运行

时间:2020-09-21 03:21:52

标签: angular ngrx ngrx-store ngrx-effects ngrx-entity

这就是我想要做的。

在延迟加载的BookmarksModule功能模块下,我的效果是侦听authActions.loginSuccess中的AuthModule,而w / c没有延迟加载。 / p>

@Injectable({
  providedIn: 'root',
})
export class FavoriteEffects {
  getFavoriteAfterLogin$ = createEffect(
    () => {
      return this.actions$.pipe(
        ofType(authActions.loginSuccess),
        map(() => favoriteActions.getFavorites())
      );
    }
  );

这是authActions.loginSuccess的分配方式。

loginCallback$ = createEffect(() => {
  return this.actions$.pipe(
    ofType(authActions.loginCallback),
    exhaustMap(() =>
      this.authService.currentUser$.pipe(
        map(currentUser => authActions.loginSuccess({ currentUser })),
        catchError(error =>
          of(authActions.loginFailure({ error: error?.error?.message }))
        )
      )
    )
  );
});

loginSuccessRedirect$ = createEffect(
  () => {
    return this.actions$.pipe(
      ofType(authActions.loginSuccess),
      tap(() => this.router.navigate([this.redirects.login.success]))
    );
  },
  { dispatch: false }
);

如您所见,当分派authActions.loginSuccess时,它被同一类中的loginSuccessRedirect$正确地拦截了,但是这个动作在延迟加载的模块中没有被拦截吗?

这是ngrx store devtools中操作的屏幕截图 enter image description here

功能模块的update-reducers操作似乎已被分派之后 loginSuccess操作已经被分派。

我该如何解决这个问题?

0 个答案:

没有答案