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] }
]
我在 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] }
]