queryParams改变时如何触发can-deactivate-guard?

How to trigger can-deactivate-guard when queryParams change?

我在 app-routing 模块中使用以下路由:

path: "overview",
component: OverviewComponent,
children: [
    { path: 'edit', component: DetailComponent, canDeactivate: [CanDeactivateGuardService] }
]

我的问题是 canDeactivate 只触发一次,从 /overview/overview/edit。我理解那部分,因为 child 在路由中的路径。

我的问题是什么是当 queryParams 在 edit 路径内更改时触发 canDeactivate 的正确解决方案?例如,将 url 从 /edit?id=1 更改为 /edit?id=2 应该也会触发 canDeactivate

是否有可以从路由模块内部实现的简单解决方案?
如果不是,你有什么建议?
记住我还在学习angular。

您可以通过在路由器配置上设置 RunGuardsAndResolvers 属性 来定义守卫和解析器何时 运行。

path: "overview",
component: OverviewComponent,
children: [
    { path: 'edit',  runGuardsAndResolvers: 'pathParamsOrQueryParamsChange', component: DetailComponent, canDeactivate: [CanDeactivateGuardService] }
]