【问题标题】:Force Angular2 to reload component on navigate强制Angular2在导航时重新加载组件
【发布时间】:2016-10-21 00:47:32
【问题描述】:

在 Angular2 RC1 及更低版本中,调用路由链接总是会导致组件重新加载:

<a [routerLink]="['/page', {id: 1}]">A link </a>

使用 Angular2,无 RC,如果组件使用不同的参数导航到自身,则不会重新加载组件。有没有办法恢复重新加载行为?

我理解处理这个问题的另一种方法,从 ActivatedRoute 订阅并检测到变量更改,但这会导致组件逻辑复杂性增加。

【问题讨论】:

  • 新路由器不支持该功能,但我看到有关计划最终支持该功能的讨论。
  • 你是怎么做到的?
  • 您能否解释一下如何实现该功能?我面临着完全相同的问题,我有一个链接到多个路由的单个组件,这些路由会根据当前路由加载不同的服务器数据。

标签: angular angular2-routing


【解决方案1】:

尽管您提到了“ActivatedRoute”以及它如何使您的代码复杂化,但我认为这将有助于其他在遇到您的问题时遇到此问题的人,例如我 :)。

This topic 会回答你的问题。

下面的这段代码(从上面的主题粘贴)是“魔法”发生的地方。 如果您将“重新加载”代码放在此订阅函数中,您的组件将重新加载。

ngOnInit() {
   this.sub = this.route.params.subscribe(params => {
      this.id = +params['id']; // (+) converts string 'id' to a number
      // Some 'reload' coding
      // In a real app: dispatch action to load the details here.
   }); 
}

【讨论】:

    【解决方案2】:

    执行此操作的一种简单方法是使用 *ngIf 强制重新加载模板。您需要一个“关闭和打开组件”的变量。如果在此关闭/打开行为之前变量的值已更改,则它们将在视图再次打开时呈现。

    【讨论】:

      猜你喜欢
      • 2016-12-18
      • 2018-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-31
      • 1970-01-01
      相关资源
      最近更新 更多