0

我使用 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 被触发,authorize$() 运行,并且 OnIdentityAuthorized() 方法返回一个 Action ({type: payload: }) 触发......

我期望发生的是 OnIdentityAuthorized() 返回的操作应该被输入到适当的减速器中——这没有发生。

我在 OnIdentityAuthorized 和相应的减速器中有一个调试器调用。OnIdentityAuthorized 返回的 Action 没有被分派。什么可能导致这种情况?我是不是误会了什么?

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

编辑 添加了额外的代码部分...效果触发了 OnIdentityAuthorized 调试器语句,因此可观察对象一直通过异步授权调用发出。减速机案例未触发...

这是 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);
4

1 回答 1

0

原来是我注册减速器的方式有问题。

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

于 2017-03-03T20:13:40.203 回答