如果 routerLink 相同,是不是支持重新加载页面

Posted

技术标签:

【中文标题】如果 routerLink 相同,是不是支持重新加载页面【英文标题】:Is angular supported to reload page if the routerLink is the same如果 routerLink 相同,是否支持重新加载页面 【发布时间】:2019-03-26 03:50:23 【问题描述】:

我知道 Angular 是一个 SPA,但我只是想知道如果 routerlink 没有改变,是否可以重新加载页面。 例如,我有一个带有仪表板按钮的侧边菜单导航栏,用于导航到仪表板视图

[routerLink]="['/merchant/', outlets: 'page': ['Dashboard']]"

导航到仪表板后,仪表板按钮不可点击,有什么办法可以重新单击此仪表板按钮?

我想这样做的原因是在仪表板组件上,我的主视图是仪表板,包含很少的 md 卡。通过单击每个 md-card,我将执行 *ngIf 以仅显示此卡的完整详细信息。我确实有一个 goBack() 按钮可以返回仪表板视图。

但我还想单击侧边菜单中的仪表板按钮以导航回仪表板页面。

感谢您的帮助。

【问题讨论】:

【参考方案1】:

尝试使用以下 sn-p 代码。这可能会对您有所帮助。

this._router.routeReuseStrategy.shouldReuseRoute = function()
    return false;
;

this._router.events.subscribe((evt) => 
    if (evt instanceof NavigationEnd) 
        this._router.navigated = false;
        window.scrollTo(0, 0);
    
);

路由重用策略的API链接:https://angular.io/api/router/RouteReuseStrategy

参考:How to reload the current route with the angular 2 router

【讨论】:

谢谢你的解决方案。它正在工作,但引发了另一个问题。在侧边菜单中,我有 md-expansion-panel,将这些代码添加到 ngInit() 后,单击任何子项,扩展面板将不会保持展开状态。 是的,这可能会发生。我认为您必须手动处理它,因为不鼓励我们使用路由重用策略,因为它可能导致您的应用程序出现故障。 好吧,那我可能需要想点别的了。为它喝彩。 没问题。如果您可以将此答案标记为正确,那就太好了,以便其他人可以从您面临的这个问题中获得帮助:)

以上是关于如果 routerLink 相同,是不是支持重新加载页面的主要内容,如果未能解决你的问题,请参考以下文章

[routerLink] 和 routerLink 的区别

模板解析错误:无法绑定到“routerLink”,因为它不是“a”的已知属性 [重复]

无法绑定到“routerLink”,因为它不是已知的本机属性[重复]

Angular 7 无法绑定到“routerlink”,因为它不是“a”的已知属性

无法绑定到“routerLink”,因为即使在导入 RouterModule 之后它也不是已知属性

无法绑定到“routerLink”,因为它不是已知的本机属性[重复]