Angular路由器更改时的分派操作

时间:2020-04-01 18:48:30

标签: angular angular-routing ngrx ngrx-store

我在Angular 8应用中使用了Ngrx,我想在用户关闭路由器时调度一个动作。我有什么选择?我是否必须从路由器创建新的Guard并实现CanDeactivate方法,还是可以直接从组件中执行而无需任何其他服务?感谢您的提示或示例

1 个答案:

答案 0 :(得分:1)

由于您使用的是NgRx,因此建议您在需要执行此操作的模块中收听路由器的效果。

在该特定路由器事件上,您可以调度操作。

路由器事件:https://angular.io/api/router/Event

示例效果:

routerEvents$ = createEffect(() => {
    return this.router.events.pipe(
        filter((event) => {
            return event instanceof <event> // replace with your router event
        }),
        mergeMap(() => {
            // do some stuff
        })
    );
});

constructor(
    private router: Router
) {}