问题陈述 :-当我导航到相同的 url 时,ngonInit 或任何其他生命钩周期都无法在 angular 中工作。 设想 :-我有一个延迟加载的通用模块,其中的内容根据它出现的链接而变化。所以我有多个不同名称的按钮指向同一个组件,当我单击按钮时,我想要屏幕名称,以便我可以根据屏幕名称获取通用组件上的内容并将其显示给用户。我面临的问题:-如果组件打开并显示一个 sceario 并且用户单击另一个按钮,该按钮路由到同一组件,角度生命周期挂钩不起作用,我不能调用 api 来刷新数据?那么如何实现呢?我尝试过的解决方案:- 1. onSamenUrlNavigation 属性设置为 'Reload' 。forRoot() 然后我订阅了那个通用模块中的 router.event 并刷新了我使用过的数据,检查它是否是 urlnavigationend 的实例。会导致问题。添加了以 screenname 为键的查询参数,但生命周期方法不起作用添加了导航附加功能,但存在一些问题那么如何在 angular 中解决这个问题呢?
2 回答
![?](http://img1.sycdn.imooc.com/545847d40001cbef02200220-100-100.jpg)
小怪兽爱吃肉
TA贡献1852条经验 获得超1个赞
不是一个聪明的方法,但这应该有效:
为同一组件创建单独的路由
{ path: 'cdconfig/:data' , component: CdpiplelinegraphComponent},
{ path: 'cdconfigflow/:data' , component: CdpiplelinegraphComponent},
导航时改变路径
if(this.router.url.indexOf('/cdconfig/')>-1){
this.router.navigate(['cdconfigflow',id.name]);
}else{
this.router.navigate(['cdconfig',id.name]);
}
![?](http://img1.sycdn.imooc.com/545864490001b5bd02200220-100-100.jpg)
米脂
TA贡献1836条经验 获得超3个赞
我会使用 NavigationEnd 解决方案,但您可以在 Event 对象内部检查用户导航到的 URL 是否是新 API 请求的正确 URL,例如:
router.events.subscribe((event) => {
if (event instanceof NavigationEnd && event.url.match('path/to/my/component')) {
this.loadApiData();
}
}
添加回答
举报
0/150
提交
取消