我有Angular 5并且在重新渲染(重新加载)路由器插座方面存在问题。
我有一个链接http://example.com/:unit/home/somethingElse
。在标题中,我有一个切换器来更改unit
。当它发生时,我需要从服务器检索新数据并将其放入标题,主页和页脚(我在这些组件的http
中有ngOnInit
个方法)。当我更改unit
(网址)时,数据保持不变。
我试过用:
this.router.routeReuseStrategy.shouldReuseRoute = () => false;
它有效。
但是每当我导航到其他页面时,它都会重新呈现我的页眉和页脚。
我知道我可以在this.activatedRoute.params.subsribe()
中使用并将所有http
方法放在那里,但为了实现此解决方法,我需要重写大量代码。
有什么方法可以在我想要的时候重新渲染(重新加载)特定的router-outlet
吗?你能帮帮我吗?
答案 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; }
}
}