Angular 路由器更改时的调度操作

Dispatch action on Angular router change

我在 Angular 8 应用中使用 Ngrx,我想在用户关闭路由器时发送一个动作。我有什么选择?我是否必须创建新的 Guard 并从路由器实现 CanDeactivate 方法,或者我可以在没有任何附加服务的情况下直接从我的组件来实现?感谢您提供任何提示或示例

由于您使用的是 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
) {}