代码之家  ›  专栏  ›  技术社区  ›  nightingale2k1

角度6-如何重新加载当前页面?

  •  3
  • nightingale2k1  · 技术社区  · 6 年前

    我有一个页面可以编辑用户,里面有一些子组件。每个子组件都可以更改或对其父组件执行某些操作。

    因此,我没有将更改发送到父级并更新某些字段,而是使用

    private route:activatedroute;
    
    重新加载(){
    this.router.navigate([“/admin/user/edit/”+this.user.id]);
    }
    < /代码> 
    
    

    基本上,它会重定向到当前页面。例如,当前页面是 http://web.info/admin/user/edit/9它将被重定向到该页,并希望该页内的所有数据都用最新数据重新加载。

    但Angular似乎无法使用路由器重定向/重新加载同一页面。navigate

    如何重新加载当前页面?

    <>编辑:

    这就是为什么我需要重新加载页面而不是手动更新当前页面上的数据的原因。我需要对其他组件进行更新,当我进行更新时,它会向历史组件添加一些内容。我需要同时刷新用户组件和历史记录组件,因为这两个组件都受其他组件更改的影响。

    .

    因此,我没有将更改发送给父级并更新某些字段,而是使用

    private route: ActivatedRoute;
    
    reload(){
        this.router.navigate(["/admin/user/edit/"+this.user.id]);
    }
    

    基本上,它会重定向到当前页面。例如,当前页面是 http://web.info/admin/user/edit/9它将被重定向到这个页面,希望该页面中的所有数据都重新加载了最新的数据。

    但角度似乎无法重定向/重新加载同一页router.navigate

    如何重新加载当前页面?

    编辑:

    这就是为什么我需要重新加载页面而不是手动更新当前页面上的数据的原因。我需要对其他组件进行更新,当我进行更新时,它会向历史组件添加一些内容。我需要同时刷新用户组件和历史记录组件,因为这两个组件都受到其他组件中更改的影响。

    2 回复  |  直到 6 年前
        1
  •  11
  •   Abhiz    6 年前

    它将100%工作。我在代码中使用过这个。

    load(val) {
    if (val == this.router.url) {
      this.spinnerService.show();
      this.router.routeReuseStrategy.shouldReuseRoute = function () {
        return false;
      };
     }
    }
    

    这是我使用的示例。在代码中使用以下部分

    this.router.routeReuseStrategy.shouldReuseRoute = function () {
        return false;
      };
    
        2
  •  1
  •   Lazar Ljubenović    6 年前

    因为它是同一个组件。您可以通过注入 ActivatedRoute 并响应参数和查询参数的更改,或者您可以更改默认值。 RouteReuseStrategy ,以便在URL更改而不是重新使用时销毁并重新呈现组件。