【问题标题】:How to reload data from backend without refreshing the window?如何在不刷新窗口的情况下从后端重新加载数据?
【发布时间】:2018-11-28 22:53:16
【问题描述】:

我已经定义了一个路由 foo/:id/edit 来使用很少的解析器来进行服务调用。

对这个视图进行一些操作后,我想重新加载从这些解析器收集的数据,而不刷新整个页面。

我已阅读 here 我不应该手动调用解析器。但也许还有另一种方式。

【问题讨论】:

  • 您是否考虑在路径 foo/:id/edit 上加载的组件中注入 SharedService,然后使用该服务重复获取数据,而不是使用解析器?

标签: angular


【解决方案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 开始可用。

您可以在 URL 中添加 refresh=1 或类似的配置,而不是添加上面的那些配置,以便立即触发解析器。

灵感来自SO answers

【讨论】:

    猜你喜欢
    • 2017-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-29
    • 1970-01-01
    • 2019-10-06
    • 2013-08-20
    • 2011-10-22
    相关资源
    最近更新 更多