我已经定义了一条路由foo/:id/edit
,以使用几个进行服务调用的解析器。
对此视图执行一些操作后,我想重新加载从那些解析器收集的数据,而不刷新整个页面。
我已经读过here,我不应该手动呼叫解析器。但是也许还有另一种方式。
答案 0 :(得分:1)
我所做的是导航到与我使用的相同的URL:
this.router.navigate([this.router.url]);
但是为了触发解析器,必须添加runGuardsAndResolvers: 'always'
才能将配置和onSameUrlNavigation: 'reload'
路由到app-routing.module
:
@NgModule({
imports: [
RouterModule.forRoot(
[
{ useHash: true, enableTracing: DEBUG_INFO_ENABLED, onSameUrlNavigation: 'reload', scrollPositionRestoration: 'disabled' }
)
],
值得注意的是scrollPositionRestoration: 'disabled'
,它可以使我的滚动位置保持完整。我已经知道它自Angular 6.1起可用。
您可以添加refresh=1
或类似的URL来代替上面的配置,这样解析器将立即被触发。
受SO answers的启发。