首页 文章

queryParam无法正确处理角度路由

提问于
浏览
0

我目前有一个路由器的路径设置如下:

{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 回答

  • 0

    加载组件时,只调用一次ngOnInit . 因此,如果您导航到 application/1 ,则会调用ngOnInit . 如果然后导航到 application/2 ,则不会再次调用ngOnInit,因为该组件已加载 . 您需要使用 paramMap 中的 paramMap 来检测参数何时更改 .

    ngOnInit(){
        this.activatedRoute.paramMap.subscribe(paramMap => {
            let id = paramMap.get('id'); // id gets updated whenever parameters change
    
            // add or call any code that needs to re-run when a parameter changes here
        });
    }
    

相关问题