是否可以同时调度一系列动作并从 ngrx 效果导航?

腰带

我的应用程序的 ngrx 效果之一有问题。我基本上是在尝试使用concatMap() AND并使用路由器存储的导航执行多个动作go()

这是效果:

  @Effect()
  loadPersonalInfoAndSignin$: Observable<Action> = this.actions$
    .ofType(session.ActionTypes.LOAD_PERSONAL_INFO)
    .map((action: LoadPersonalInfoAction) => action.payload)
    .do(sessionToken => {
      localStorage.setItem('authenticated', 'true');
      localStorage.setItem('sessionToken', sessionToken);
    })
    .switchMap(() => this.userAccountService
      .retrieveCurrentUserAccount()
      .concatMap(currentUserAccount => [
        new LoadUserAccountAction(currentUserAccount),
        new SigninAction(),
        new LoadMessagesAction({})
      ])
    )
    .mapTo(go(['/dashboard']));

如果我删除了.mapTo(go(['/dashboard'])),那么concatMap数组中的所有三个动作都会成功分派到它们对应的效果。

因此,我想知道为什么我mapTo(go(...会导致数组中的最后两个操作(即SigninAction& LoadMessagesAction)不被分派到它们相应的效果中。

有人可以帮忙吗?

编辑:更改mapTodo如下:

.do(go(['/dashboard']));

导致以下错误:

ERROR in /Users/julien/Documents/projects/bignibou/bignibou-client/src/app/core/store/session/session.effects.ts (55,9): Argument of type 'Action' is not assignable to parameter of type 'PartialObserver<SigninAction>'.
  Type 'Action' is not assignable to type 'CompletionObserver<SigninAction>'.
    Property 'complete' is missing in type 'Action'.
卡特

使用dogo通话将看不到改变的路线。go是一个动作创建者,它创建的动作需要从效果中发出,@ngrx/router-store以接收动作并影响路线变化。

此外,mapTo运算符将忽略它接收到的内容并发出您指定的值,因此它也不合适。

相反,您应该goconcatMap数组中包含由调用创建的操作

@Effect()
loadPersonalInfoAndSignin$: Observable<Action> = this.actions$
  .ofType(session.ActionTypes.LOAD_PERSONAL_INFO)
  .map((action: LoadPersonalInfoAction) => action.payload)
  .do(sessionToken => {
    localStorage.setItem('authenticated', 'true');
    localStorage.setItem('sessionToken', sessionToken);
  })
  .switchMap(() => this.userAccountService
    .retrieveCurrentUserAccount()
    .concatMap(currentUserAccount => [
      new LoadUserAccountAction(currentUserAccount),
      new SigninAction(),
      new LoadMessagesAction({}),
      go(['/dashboard'])
    ])
  );

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

ngrx /动作/效果后UI通知存储

来自分类Dev

我的 ngrx 效果不会触发动作

来自分类Dev

NgRx效果仅执行一次

来自分类Dev

ngrx 在调度动作时是否有可能不触发相关的效果?

来自分类Dev

NgRx效果mergeMap方法

来自分类Dev

ngrx从效果更新状态

来自分类Dev

如何使用ngrx / effects执行多个相关的操作/效果/动作

来自分类Dev

在rxjs / ngrx效果中链接动作的正确方法是什么

来自分类Dev

测试失败动作-大理石-NGRX效果

来自分类Dev

如何从NgRx中的单个效果分派多个动作?

来自分类Dev

Ngrx 效果:输出未添加到动作流中

来自分类Dev

有条件地返回 NgRx 效果中的动作

来自分类Dev

在使用路由保护之前,使用调度动作在ngrx效果中加载数据

来自分类Dev

Ngrx效果并行http调用

来自分类Dev

ngrx:商店INIT操作的效果

来自分类Dev

NGRX 效果/Firebase (Firestore) 错误

来自分类Dev

store.select 的 ngrx 效果

来自分类Dev

使用延迟测试 NGRX 效果

来自分类Dev

NgRx效果,发生一个失败,不接受新动作

来自分类Dev

角度ngrx存储将多http服务调用成一个效果并消除动作

来自分类Dev

如何有条件地从ngrx中的效果分派多个动作

来自分类Dev

测试NGRX效果延迟发出动作或不发出任何东西

来自分类Dev

NGRX:如何多次调用同一服务,而内部效果不同

来自分类Dev

我应该如何使用ngrx效果处理从同一路由获取数据?

来自分类Dev

需要帮助来了解此Ngrx效果

来自分类Dev

NgRx-选择效果中的AppState

来自分类Dev

从NgRx效果调用API时捕获错误

来自分类Dev

正确处理ngrx效果catchError

来自分类Dev

在NGRX中以什么顺序执行效果