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