为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

冉冉说 2021-11-12 17:15:26
问题陈述 :-当我导航到相同的 url 时,ngonInit 或任何其他生命钩周期都无法在 angular 中工作。 设想 :-我有一个延迟加载的通用模块,其中的内容根据它出现的链接而变化。所以我有多个不同名称的按钮指向同一个组件,当我单击按钮时,我想要屏幕名称,以便我可以根据屏幕名称获取通用组件上的内容并将其显示给用户。我面临的问题:-如果组件打开并显示一个 sceario 并且用户单击另一个按钮,该按钮路由到同一组件,角度生命周期挂钩不起作用,我不能调用 api 来刷新数据?那么如何实现呢?我尝试过的解决方案:- 1. onSamenUrlNavigation 属性设置为 'Reload' 。forRoot() 然后我订阅了那个通用模块中的 router.event 并刷新了我使用过的数据,检查它是否是 urlnavigationend 的实例。会导致问题。添加了以 screenname 为键的查询参数,但生命周期方法不起作用添加了导航附加功能,但存在一些问题那么如何在 angular 中解决这个问题呢?
查看完整描述

2 回答

?
小怪兽爱吃肉

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]);

}


查看完整回答
反对 回复 2021-11-12
?
米脂

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();

    }

}


查看完整回答
反对 回复 2021-11-12
  • 2 回答
  • 0 关注
  • 121 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信