在Angular2 RC1和更低级别调用路由链接时,总是会导致组件重新加载:
<a [routerLink]="['/page', {id: 1}]">A link </a>
使用Angular2,无RC,如果组件使用不同的参数导航到自身,则不会重新加载该组件。有没有办法让重新加载行为回来?
我理解处理此问题的另一种方法,从ActivatedRoute订阅并检测到变量,但这会导致组件逻辑的复杂性增加。
答案 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重新加载模板。你需要一个“关闭和打开组件”的变量。如果在此关闭/打开行为之前变量的值已更改,则在视图再次打开时将呈现它们。