等待导航结束,然后用ngrx和rxjs调度一个操作



以下是片段:

goToStep$ = createEffect(() =>
this.action$.pipe(
ofType(RouterActions.goToStep),
tap(({ path, query: queryParams, extras }) =>
this.router.navigate([path], { queryParams, ...extras })
),
map(() => RouterActions.nextOrBack())
)
);

我希望RouterActions.nextOrBack()只有在上一次导航完成后才能调度。我怎样才能做到这一点?

谢谢

使用switchMap(您可以在switchMap中返回承诺(:

this.action$.pipe(
ofType(RouterActions.goToStep),
switchMap(({ path, query: queryParams, extras }) =>
this.router.navigate([path], { queryParams, ...extras })
),
// everything below is executed after this.router.navigate emits
map(() => RouterActions.nextOrBack())
)

router.navigate返回一个承诺:

  • 在导航成功时解析为CCD_ 5
  • 当导航失败时解析为CCD_ 6
  • 发生错误时被拒绝

最新更新