我派遣一个动作,当表单提交,那么则达到checkPasswd
:NGRX:错误回调没有达到
public checkPasswd():void {
this.store$.dispatch({ type: 'USER_REDUCER_USER_LOGIN', payload: { username: this.form.value.mail, password: this.form.value.passwd } });
}
上ngOnInit - constructor
我创建这个订阅Store<IStore>
:
private user$: Observable<IUser>;
private userSub: Subscription;
constructor(private store$: Store<IStore>)
{
this.user$ = this.store$.select(state => state.user).filter(user => user.id != null);
}
ngOnInit():void {
this.userSub = this.user$.subscribe(
(user: IUser) => {
this.router.navigate(['/app']); (((2)))
},
(error: any) => {
this.addAlert(error.message); (((1)))
}
);
}
我在检查发现错误时已达到(((1)))
。尽管如此,当出现错误时它从未达到过。
我使用efffects:
@Effect({ dispatch: true })
userLogin$: Observable<Action> = this._actions$
.ofType('USER_REDUCER_USER_LOGIN')
.switchMap((action: Action) =>
this._userService.checkPasswd(action.payload.username, action.payload.password)
.map((user: any) => {
return { type: 'USER_REDUCER_USER_LOGIN_SUCCESS', payload: user };
})
.catch((err) => {
return Observable.of({ type: 'USER_REDUCER_USER_LOGIN_FAILED', payload: { error: err } });
})
);
正如你所看到的,在我的影响,我想打电话给我的服务,如果它得到我返回Observable.of({ type: 'USER_REDUCER_USER_LOGIN_FAILED', payload: { error: err } });
错误。
所以,在这之后,该减速器被调用,达到:
public static USER_LOGIN_FAILED = `${UserReducer.reducerName}_USER_LOGIN_FAILED`;
private static userLoginFailed(sourcesRdx, type, payload) {
return Object.assign(<IUser>{}, sourcesRdx, payload);
}
然而,没有达到(((1)))
,既不(((2)))
。所以,调用堆栈似乎没有达到我的订阅...
任何想法?
背后有什么'this.user $'? – olsn
对不起,我编辑了这篇文章。但是,'构造函数(private store $:Store){this.user $ = this.store $ .select(state => state.user).filter(user => user.id!= null); }'。 ' –
Jordi