我使用'routerLink'来浏览我的路线,它运行正常。但是,当我再次点击同一个按钮时,我希望该组件将再次加载。但目前,它还没有在angular2中工作。
app.component.html
<ul class="nav navbar-nav navbar-right">
<li><a [routerLink]="['/events']" routerLinkActive="active" [routerLinkActiveOptions]="{exact:true}">All Events</a></li>
<li><a [routerLink]="['/events/new']" routerLinkActive="active" [routerLinkActiveOptions]="{exact:true}">Create New</a></li>
</ul>
我想,当我一次又一次点击“所有活动”标签时,每次都会加载事件组件。
如何在angular2中实现这种情况?
答案 0 :(得分:5)
我想,当我点击“所有活动”时选项卡,一次又一次,事件组件每次加载。
这在angular2中是--env.includeCss
,原因是一旦你加载任何组件,只有在你从另一条路线再次导航到该路线时,该组件才会重新加载。
但你可以强行重装
基本上有两种方法
您可以根据需要一次又一次地调用Write-Output $PSVersionTable.PSVersion
方法,这不是推荐方式
你可以从Not Possible
调用一个commonn方法,然后根据需要再次调用该函数
ngOnInit()
另一种方法是如果你想在param change上加载相同的组件,你可以在构造函数
中使用它
ngOnInit()
答案 1 :(得分:4)
下面的github链接具有正确的解决方案 https://github.com/angular/angular/issues/13831
将以下代码放入要加载的组件的构造函数中
this.router.routeReuseStrategy.shouldReuseRoute = function () {
return false;
};
this.router.events.subscribe((evt) => {
if (evt instanceof NavigationEnd) {
this.router.navigated = false;
window.scrollTo(0, 0);
}
});
答案 2 :(得分:1)
见这里:How to reload the current route with the angular 2 router
总结一下 - 它不是内置于路由器中的功能。听起来最好的选择是使用将刷新或重新获取任何相关数据的服务,如果有任何更改,Angular将自动更新视图。
如果有人说Angular无法做到某些事情,那几乎总是不行。使用现有的解决方案是不可能的。 ; - )