首页 > 解决方案 > Angular:如何始终重新加载 URL 但忽略片段?(使用 RunGuardsAndResolvers ?)

问题描述

我“总是”想重新加载我的解析器,并且只在设置片段时忽略重新加载(例如:URL/xxx?yyy#FRAGMENTHERE)

我错过了什么还是在 Angular 中不可能?

这是我尝试过的:

在 app-routing-module.ts

...
onSameUrlNavigation: 'reload',
...

在 XXX-routing-module.ts

测试1:

...
runGuardsAndResolvers: 'always' as RunGuardsAndResolvers,
...

这个不起作用,因为当片段更改时,解析器被调用

测试 2,3,4:

runGuardsAndResolvers: 'pathParamsOrQueryParamsChange' as RunGuardsAndResolvers,
runGuardsAndResolvers: 'paramsOrQueryParamsChange' as RunGuardsAndResolvers,
runGuardsAndResolvers: 'paramsChange' as RunGuardsAndResolvers,

那些不起作用,因为如果我试图在同一个 URL 上重新加载它不会调用解析器

PS:导航看起来像这样

this.router.navigate([], {
     queryParamsHandling: 'merge',
     queryParams: {
         ProgramState: ProgramState.Reading,
         Session: 0,
     }
});

标签: angularangular-routerangular-resolver

解决方案


推荐阅读