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
从这里
答案 0 :(得分:3)
您不必自己进行调度。 从效果“返回”的每个动作将由@ ngrx / effects调度。
map(user => new LoginSuccess({user}))
另一方面,如果您不分派动作,则必须使用
@Effect({ dispatch: false})
如果将dispatch: false
添加到效果中,您的代码段也应起作用,但是最好返回操作而不是自己分派操作。