行动后重新导向CREATE_SUCCES

时间:2019-02-01 09:50:12

标签: angular ngrx

我有一个用于创建新记录的组件...提交表单时,我调度了一个CREATE操作。

在此组件的OnInit中,我有一个ActionsSubject订阅 捕获CREATE操作的完成。完成此操作后,我将重定向到概述组件。

这是我第一次插入记录时的正常工作,但是当尝试添加第二条记录时,只要回到创建组件并立即将我重定向到概述,就会立即击中actionssubject完成订阅。

[1394.43833333]

我应该能够返回到create组件而无需立即重定向...

2 个答案:

答案 0 :(得分:0)

我认为我做错了您,您正在听操作并在组件中对其进行处理,这不好。您应该仅在减速器上监听动作 (如果是同步处理程序+会产生新状态)或效果(如果是异步处理程序,或者只是副活动)。 因此,您可以在效果上收听 CREATE_SUCCESS ,然后在那里重新路由。例如:

constructor(
   ...,
   private router: Router,
   ...
) { }

@Effect({ dispatch: false })
createSuccess$: Observable<Action> = this.actions$.pipe(
   ofType(SubSpecialisatiesActionTypes.CREATE_SUCCESS),
   tap((action) => this.router.navigate(['/contacts', action.payload.id]))
);

希望有帮助。

答案 1 :(得分:0)

我知道了。 ActionsSubject存储最新动作。即使在破坏订阅的情况下。

我将其更改为ScannedActionsSubject,现在一切正常。