角度2:在同一路线上重定向时再次重新加载相同的组件

时间:2017-08-25 05:53:59

标签: angular angular2-template angular2-forms angular2-directives

我使用'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中实现这种情况?

3 个答案:

答案 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无法做到某些事情,那几乎总是不行。使用现有的解决方案是不可能的。 ; - )