Angular 7 关于相同的 url 导航问题?

问题陈述 :-

当我导航到相同的 url 时,ngonInit 或任何其他生命钩周期都无法在 angular 中工作。 设想 :-

我有一个延迟加载的通用模块,其中的内容根据它出现的链接而变化。所以我有多个不同名称的按钮指向同一个组件,当我单击按钮时,我想要屏幕名称,以便我可以根据屏幕名称获取通用组件上的内容并将其显示给用户。

我面临的问题:-

如果组件打开并显示一个 sceario 并且用户单击另一个按钮,该按钮路由到同一组件,角度生命周期挂钩不起作用,我不能调用 api 来刷新数据?那么如何实现呢?

我尝试过的解决方案:- 1. onSamenUrlNavigation 属性设置为 'Reload' 。forRoot() 然后我订阅了那个通用模块中的 router.event 并刷新了我使用过的数据,检查它是否是 urlnavigationend 的实例。会导致问题。

  1. 添加了以 screenname 为键的查询参数,但生命周期方法不起作用

  2. 添加了导航附加功能,但存在一些问题

那么如何在 angular 中解决这个问题呢?


冉冉说
浏览 122回答 2
2回答

小怪兽爱吃肉

不是一个聪明的方法,但这应该有效:为同一组件创建单独的路由 { 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]);}

米脂

我会使用 NavigationEnd 解决方案,但您可以在 Event 对象内部检查用户导航到的 URL 是否是新 API 请求的正确 URL,例如:router.events.subscribe((event) => {    if (event instanceof NavigationEnd && event.url.match('path/to/my/component')) {        this.loadApiData();    }}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript