如何使用 Angular 2 路由器重新加载当前路由

新手上路,请多包涵

我将 Angular 2 与 hashlocation 策略一起使用。

组件使用该路由加载:

 "departments/:id/employees"

到目前为止还好。

在我成功批量保存多个已编辑的表行后,我想通过以下方式重新加载当前路由 URL:

 this.router.navigate([`departments/${this.id}/employees`]);

但是什么都没有发生,为什么?

原文由 Pascal 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 806
2 个回答

如果您的 navigate() 没有更改浏览器地址栏上已经显示的 URL,则路由器无关。刷新数据不是路由器的工作。如果要刷新数据,请创建一个注入到组件中的服务并在该服务上调用加载函数。如果要检索新数据,它将通过绑定更新视图。

原文由 Yakov Fain 发布,翻译遵循 CC BY-SA 3.0 许可协议

使用“时间戳”是一种廉价而神奇的方式。

 this.router.navigate([], {
    relativeTo: this.route,
    queryParams: {
        ...this.route.snapshot.queryParams,
        // replace 't' with any others not to conflict with exsiting
        // '2^11' prevents reloading in about 2 seconds
        t: Date.now() >> 11,
        skipLocationChange: true,
    },
});

原文由 Xiaodi HU 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进