重新路由到组件时初始化组件

时间:2019-03-24 14:31:07

标签: angular angular-routing

在进入代码之前,我有一个概念性的问题: 我正在从组件A(项目主列表)路由到组件B(窗体以创建新项目),然后从组件B路由回组件A。 我想用新项目更新组件A。一种选择是订阅服务中注入这两个组件的主题。 我想知道是否还有另一种选择。我知道路由会保存组件的状态,并且路由回组件A时不会调用ngOnInit事件,因此我无法使用此事件来订阅服务。重新路由到组件时,是否可以使用另一个生命周期事件?

2 个答案:

答案 0 :(得分:0)

当您路由回组件A时,不会知道ngOnInit将被触发,并且您可以从API提取数据来更新UI

答案 1 :(得分:0)

我将使用RouteGuard函数通过canActivate函数为组件预加载数据。它将阻止该路线继续直到加载所需的数据,然后允许其继续并呈现视图。

在路由配置中,您将执行以下操作

export const ROUTES: Routes = [
  //...
  {
    path: 'example',
    component: ExampleComponent,
    canActivate: [PreloadDataGuard] //<-- 
  }
  //...
];

保护程序将处理数据的装入,完成后应返回Observable<boolean>Promise<boolean>

如果您对数据使用存储模式(例如NGRX或NGXS或Redux),则更加容易。在这种情况下,即使我认为即使您不使用商店也可以帮助您进一步{@ 3}}。