强制Angular2在导航

时间:2016-10-21 00:47:33

标签: angular angular2-routing

在Angular2 RC1和更低级别调用路由链接时,总是会导致组件重新加载:

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

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

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

2 个答案:

答案 0 :(得分:2)

虽然你已经提到'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.
   }); 
}

答案 1 :(得分:1)

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