我已经使用标记为“depricated”的路由器升级了Angular 2,并开始使用rc5和rc6中的“new”路由器。但是现在我遇到了一个问题(从rc5开始,在rc6中仍然是相同的),其中有一个组件需要导航到相同的组件但具有不同的参数(以获取其他数据,然后是视图中的那个已经完成,基于关于参数)。
在depricated路由器中,每次使用this.router.navigate导航到组件时,都会调用构造函数和AfterViewInit等。在新的路由器中,在相互之后再次调用相同的组件时,不会调用构造函数和其他内容。所以我猜有一些“神奇”/缓存正在发生。另请注意,在组件中我发送了一个必需参数和一些可选参数,因此链接看起来像这样:http://localhost:2222/mycomponent/1;someotherparam=123
有没有办法在每次导航时强制创建组件?
答案 0 :(得分:7)
查看Angular 2的Rangle.io guide。
特别是关于阅读路线参数
的部分ActivatedRoute上的params属性是Observable的原因是路由器在导航到同一组件时可能无法重新创建组件。在这种情况下,参数可能会更改,而不会重新创建组件。
因此,您的组件不会被重新创建,但您可以订阅您感兴趣的路线部分的更改(params
,data
,fragment
,{{1} })并将这些初始化方法称为queryParams
回调。