【问题标题】:Refresh router on component.ts在 component.ts 上刷新路由器
【发布时间】:2025-12-24 21:40:11
【问题描述】:

我想重新加载我的页面路由以刷新其中存储的数据。我可以通过将routerLink 放在 html 上来做到这一点,但是我可以将它变成 ts 文件中的函数吗?我找到了location.reloadlocation.href,但它们刷新了整个页面。

获取消息的代码

receiveMessage(){
this.angularFiremessaging.messages.subscribe(
(payload) => {
console.log("new message received. ", payload);
this.currentMessage.next(payload);
});
}

我的html

{{ (message | async)?.notification.title }}
{{ (message | async)?.notification.body}}

【问题讨论】:

  • 您想从路由器链接中检索什么样的数据,参数?
  • 为什么刷新所有页面而不更新具体数据?
  • 这就是我要避免的。我不想刷新整个页面。我只想重新加载我的路由器,以便可以更新我的 html 元素。
  • @WebDeveloper 我想要做的是重新加载路由。例如,当您已经在查看主页时单击菜单的主页选项会刷新主页。

标签: angular firebase


【解决方案1】:

如果您的意思是参数,您可以为此目的使用ActivatedRoute

import { ActivatedRoute } from '@angular/router';

constructor(private route: ActivatedRoute)

ngOnInit() {
   this.route.params.subscribe(params => {
      //will be fired on every param change in the url
      console.log('here are your params: ', params);
   });
}

【讨论】:

  • 某种类似的东西。我正在处理一个 firebase 推送通知,我希望我的通知在每次推送时自动显示在前台。问题是我必须重新加载我的路由器才能显示出来。非常感谢您的帮助,但这并不能解决我的问题。
  • 好的,最好分享一些代码来明确问题出在哪里,好吗?
【解决方案2】:

试试这个:

this.router.navigateByUrl('/RefreshComponent', { skipLocationChange: true }).then(() => {
    this.router.navigate(['Your actualComponent']);
}); 

参考:How to Refresh a Component in Angular

【讨论】:

  • 对不起,先生。你能向我解释一下什么是 RefreshComponent 吗?刚编好,随便放个组件进去?
  • "这可以通过 hack 来实现,导航到一些示例组件,然后导航到要重新加载的组件。"
  • 谢谢。先生还有一个问题。我不知道这是什么。路由器也是。这是您通过导入服务实现的吗?喜欢 ActiveRouter 还是路由器?
  • 是的,你需要从 Angular 构造函数中导入路由器(私有路由器:路由器){ }