想知道是否有人能帮助我了解这里发生了什么。
我正在运行一个ngrx效果,它调用身份验证服务,对该服务的调用工作正常,如果失败,它也会正确地进入catch错误。
问题是,如果成功,我想将原始操作传递给下一个操作员(而不是对auth服务的调用的响应(。
然而,当我这样做的时候,我总是得到一个未定义的。
login$ = createEffect(
() =>
this.actions$.pipe(
ofType(AuthActions.login),
switchMap(action => {
return this.auth.login(action.user.email, action.password);
}),
map(action => { **// This is undefined, but what i want is the action object**
console.log(action);
this.store.dispatch(
loginSuccessful({
user: action,
})
);
}),
catchError((err) => {
console.log('Received error from AngularFire:', err);
return of(err);
})
),
{ dispatch: false }
);
刚刚计算出我可以用tap替换switchMap和map。
login$ = createEffect(
() =>
this.actions$.pipe(
ofType(AuthActions.login),
tap(action => {
return this.auth.login(action.user.email, action.password);
}),
tap(action => {
console.log(action);
this.store.dispatch(
loginSuccessful({
user: action,
})
);
}),
catchError((err) => {
console.log('Received error from AngularFire:', err);
return of(err);
})
),
{ dispatch: false }
);