来自组件内部的角度传递路线数据

Posted

技术标签:

【中文标题】来自组件内部的角度传递路线数据【英文标题】:Angular pass route data from inside component 【发布时间】:2021-10-15 19:33:13 【问题描述】:

我想要做的是将数据从组件内部传递给路由..

在应用程序组件中我有这个

this.router.events.subscribe(event => 
  if (event instanceof RoutesRecognized) 
    let current_route = event.state.root.firstChild;
    const title = current_route?.data.title;
    this.titleService.setTitle(title);
  
);

然后像这样路由

   path: 'confirm-registration/:code', component: HomeComponent,canActivate:[HomeGuard],data:title:'title.landing_page' ,
   path: 'u/:user', component: ProfileComponent,

在配置文件组件中,我需要以某种方式将标题传递给路由..

我尝试将其放入 ngOnInit 中,但它不起作用

this.router.navigate([decodeURI(this.router.url)],state: title: "Test Title");

所以我想问一下是否有可能以某种方式实现这一目标。

编辑

我试过了

let currentRoutes = this.router.config;
currentRoutes[1].data = title: res.data.name;
this.router.resetConfig(currentRoutes);
this.router.navigate([this.router.url]);

它成功更改数据但有问题所以它只是保持无限导航

【问题讨论】:

【参考方案1】:

这不应该在 ngOnInit() 中,它是一个生命周期钩子。

如果您是在按钮点击上进行路由,那么最好编写一个函数以在点击事件上运行,并且在该函数内部,应该粘贴此行。

【讨论】:

不,我想在每次用户访问 ProfileComponent 时执行此操作(即使他第一次加载站点 - 没有 routerlink)

以上是关于来自组件内部的角度传递路线数据的主要内容,如果未能解决你的问题,请参考以下文章

如何以角度将数据从一条路线传输到另一条路线? [复制]

角度2:在同一路线上重定向时再次重新加载同一组件

在路线更改和新组件加载不起作用后以角度滚动到顶部

角度传递数组到另一个(非子)组件

角度导航到具有不同参数的相同路线

比使用 routeguard 更安全地保护有角度的路线?