ngrx / effects不调度映射的动作

时间:2017-03-03 06:14:26

标签: ngrx ngrx-effects

我使用ngrx / effects库定义了非常直接的效果。

@Effect()
public Authorize$ = this._actions$.ofType(IdentityActionsService.AUTHORIZE_IDENTITY)
    .switchMap(action => this._svc.Authorize$(action.payload))
    .catch(err => Observable.of(null).do(() => console.error(err); }))
    .map(identity => this._identity.OnIdentityAuthorized(identity)) 

触发@Effect,授权$()运行,返回Action({type:payload:})的OnIdentityAuthorized()方法触发......

我期望发生的是OnIdentityAuthorized()返回的操作应该被送入适当的reducer - 这是不会发生的。

我在OnIdentityAuthorized和相应的reducer中调试了一个调试器。 OnIdentityAuthorized返回的Action未被分派。什么可能导致这个?我误会了什么吗?

我觉得我所拥有的与示例1基本相同:https://github.com/ngrx/effects/blob/master/docs/intro.md

修改 添加了其他代码段...该效果触发OnIdentityAuthorized调试器语句,因此observable通过异步授权调用一直发出。减速器的情况不会被触发......

这是OnIdentityAuthorized()实现:

public static ON_IDENTITY_AUTHORIZED = '[IDENTITY] Authorized';
public OnIdentityAuthorized(identity: Identity | JWT): Action {
    debugger;
    return {
         type: IdentityActionsService.ON_IDENTITY_AUTHORIZED,
         payload: identity
    };
}

这是减速器部分:

switch (action.type) {
        case IdentityActionsService.ON_IDENTITY_AUTHORIZED:
            debugger;
            return merge({}, action.payload);

1 个答案:

答案 0 :(得分:0)

原来我注册减速器的方式一直存在问题。

我试图做一些异国情调,以便为延迟加载的模块添加额外的状态端点......结果是存在问题 - 但这是一个不同的问题。