这个问题产生的原因可能是页面没有完全加载或者路由需要在点击事件之后延迟执行。可以尝试在点击事件中更改路由参数并使用setTimeout()函数延迟路由执行来解决这个问题。
例如,在组件中定义一个函数来改变路由参数,并使用setTimeout()函数延迟路由执行:
changeRoute() { this.router.navigate(['/newPath', { queryParams: { id: this.newId } }]); setTimeout(() => { this.router.routeReuseStrategy.shouldReuseRoute = function() { return false; }; }, 0); }
这将使用Angular的路由导航器在点击事件中更改路由参数,然后使用setTimeout()函数延迟路由执行。在setTimeout()函数中,使用routeReuseStrategy属性禁用路由重用,以便确保路由每次都能够正常工作。
最后,在HTML模板中使用changeRoute()函数来处理按钮的点击事件: