在Angular 5中重新渲染(重新加载)router-outlet

时间:2018-06-01 15:17:58

标签: javascript angular typescript

我有Angular 5并且在重新渲染(重新加载)路由器插座方面存在问题。 我有一个链接http://example.com/:unit/home/somethingElse。在标题中,我有一个切换器来更改unit。当它发生时,我需要从服务器检索新数据并将其放入标题,主页和页脚(我在这些组件的http中有ngOnInit个方法)。当我更改unit(网址)时,数据保持不变。

我试过用: this.router.routeReuseStrategy.shouldReuseRoute = () => false;它有效。 但是每当我导航到其他页面时,它都会重新呈现我的页眉和页脚。

我知道我可以在this.activatedRoute.params.subsribe()中使用并将所有http方法放在那里,但为了实现此解决方法,我需要重写大量代码。

有什么方法可以在我想要的时候重新渲染(重新加载)特定的router-outlet吗?你能帮帮我吗?

1 个答案:

答案 0 :(得分:0)

如果使用shouldReuseRoute = () => false适用于您,则一般方法是创建自定义RouteReuseStrategy。在shouldReuseRoute中,您可以检查相同路由组件的路由参数是否不同,如果是,则返回false,即如下所示:

if (future.component === curr.component) {
  if (curr.paramMap.keys.length) {
     const diff = curr.paramMap.keys.filter((key) =>
       curr.paramMap.get(key) !== future.paramMap.get(key));
     if (diff.length) { return false; }
  }
}