如何解决角度无效的行为?

时间:2018-08-07 05:23:04

标签: javascript angular ngrx

enter image description here

core.js:1671 ERROR Error: Effect "AuthEffect.login$" dispatched an invalid action: undefined
    at reportInvalidActions (effects.js:219)
    at verifyOutput (effects.js:207)
    at MapSubscriber.project (effects.js:273)
    at MapSubscriber.push../node_modules/rxjs/_esm5/internal/operators/map.js.MapSubscriber._next (map.js:35)

我使用ngrx进入服务时遇到错误,这是我的代码

@Injectable()
export class AuthEffect {
  @Effect()
  login$ = this.actions$.pipe(
    ofType(AuthActionsTypes.LOGIN),
    map((action: Login) => action.payload),
    switchMap((auth: Authenticate) => {
      return this.authService.login(auth).pipe(
        map(user => this.store.dispatch(new LoginSuccess({user}))),
        catchError(error => of(new LoginFailure(error)))
      );
    })
  );

使用this.store时出现此行的问题,如果使用

会给我错误
  map(user => this.store.dispatch(new LoginSuccess({user}))),

如果我使用new LoginSuccess({user})可以正常工作,为什么我不能调度 action从这里

1 个答案:

答案 0 :(得分:3)

您不必自己进行调度。 从效果“返回”的每个动作将由@ ngrx / effects调度。

map(user => new LoginSuccess({user}))

另一方面,如果您不分派动作,则必须使用

@Effect({ dispatch: false})

如果将dispatch: false添加到效果中,您的代码段也应起作用,但是最好返回操作而不是自己分派操作。