首页 > 解决方案 > 在 Angular 6 中,如果路线相同,我将无法再次加载该组件

问题描述

如果路由相同但父组件中的数据已更改,我将无法再次加载组件。我有 route.ts 假设 /module/{name} 对于一个组件,所有路由都写在上面我只更改父组件中的数据,但路由相同,如何处理这种情况

在父组件中,我在 api 调用父组件成功后导航到路由

this.Service.updateInfo(res['Info']);   
this.router.navigate([routeUrl] ,{relativeTo: this.route });

并在子渲染中使用路由器插座并使用获取数据表单服务

this.selected = this.Service.InfoData;

服务文件

 public updateInfo(data) {
    if(data) {
      this.InfoData = data;
    }
  }

但是一旦路线相同,孩子就不会从服务中获取更新的数据。

标签: javascriptangulartypescriptangular6

解决方案


您可以使用 BehaviorSubject 发出数据并使用角度服务将数据从一个组件审核到新组件。在你的情况下,你需要这样..

InfoData = new BehaviourSubject<any>([]); 
  // inside your service

从子组件订阅 InfoData,当需要更改数据时,只需使用

this.InfoData.next(data)  //and it will gives data.

推荐阅读