以下是片段:
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
- 发生错误时被拒绝