我目前有一个路由器的路径设置如下:
{path: "application/:id", component: ApplicationComponent}
我通过使用ngFor循环生成链接菜单 . 它使用索引生成动态routerLink:
routerLink="application/{{index}}"
单击后,它将移至正确的URL并使用我的ApplicationComponent的ngOnInit方法获取URL中的索引,并从单独的类中的数组中提取特定对象 .
HOWEVER 它仅适用于您单击的第一个链接 . 如果我点击链接1,它会正确加载页面,对象1显示's data. But when I click link 2, it travels to application/2 in the url but keeps object 1s info up. If i refresh the page and click link 2, object 2'的信息,所以我知道它正在从数组中正确拉出 .
我怀疑,一旦点击任何链接,ApplicationComponent就会使用ngOnInit方法来创建组件,然后如果单击另一个链接,则不会调用此方法,因此变量不会更新 .
我怎么解决这个问题?我需要应用程序组件知道我已经前往新的子链接,因此它可以再次调用ngOnInit
1 回答
加载组件时,只调用一次ngOnInit . 因此,如果您导航到
application/1
,则会调用ngOnInit . 如果然后导航到application/2
,则不会再次调用ngOnInit,因为该组件已加载 . 您需要使用paramMap
中的paramMap
来检测参数何时更改 .