【问题标题】:Angular 9 - Redirect to same URL and REFRESH page, but should call only current page API callAngular 9 - 重定向到相同的 URL 和 REFRESH 页面,但应该只调用当前页面 API 调用
【发布时间】:2021-05-05 06:13:59
【问题描述】:

想要重定向到相同的 URL,也想刷新页面,我尝试使用带有 href 的锚标记,但它会刷新页面并从应用程序开始调用所有 api。在 angularjs 中,我们使用 state.go ,其中整个页面不会刷新。 例如。 : http://localhost:4200/user/27b3bcd3-5de9-4ca6-b2c9-d8ad708518fd/details/main 如果这是页面并且此详细信息页面包含按钮,则​​单击按钮时应打开另一个用户详细信息,http://localhost:4200/user/985b97cd-fad4-4194-abd5-adbd9bfa056b/details/main

在 angualr 9 中尝试了 routerLink 和 Router.navigate,但只有 id 在 url 中更新,但页面没有刷新。

【问题讨论】:

  • 页面不会刷新,这是设计的。这就是我们称其为单页应用程序的原因。你能解释一下这个问题吗?
  • 你可以使用:imports: [RouterModule.forRoot(routes, {onSameUrlNavigation: 'reload'})] })\
  • 我知道,但是我想用没有更新的新数据更新当前页面数据
  • @PrashantPimpale 我尝试了你的解决方案,但它不起作用,只有 url 中的 id 被更新
  • 我只想更新当前父组件,以便所有子组件数据都得到更新,但我不想从路由刷新整个页面,目前当我重定向到同一个 url 我的整个应用程序刷新

标签: typescript angular-ui-router angular9


【解决方案1】:

如果您需要真正的页面重新加载,那么您需要使用document.location.reload(); 而不是路由器。

【讨论】:

    【解决方案2】:

    这在类似的情况下对我有用。路由到所需页面并重新加载。

      this.router.navigate(['/'])
           .then(() => {
               window.location.reload();
            });
    

    【讨论】:

      【解决方案3】:

      在单击按钮时触发的函数中尝试window.location.reload();。这将刷新当前的导航 url。

      【讨论】:

      • 重复现有答案的理由是什么?
      • 嗨 satanTime,道歉,因为答案看起来很相似,但它实际上使用根对象 window 来调用重新加载。
      • 在 Angular 中没有 WINDOW 注入令牌,如果你想支持 SSR,只有 DOCUMENT,仅供参考 window.location === document.location 是真的。
      猜你喜欢
      • 2022-01-22
      • 1970-01-01
      • 2021-02-23
      • 1970-01-01
      • 2011-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多