Angular 6应用程序组件和子组件执行

Angular 6应用程序组件和子组件执行,angular,angular6,angular-components,angular-lifecycle-hooks,Angular,Angular6,Angular Components,Angular Lifecycle Hooks,我正在使用Angular 6开发一个应用程序,我正在寻求一些帮助/指导。下面是我的应用程序组件 app.component.html --标题-- --路由器出口-- --页脚-- 我正在调用两个可观察的http服务来获取app.component的ngOnInit中的数据,并将值存储在浏览器sesionStorage中。这两个调用是一个接一个地进行的。我正在尝试读取子组件的ngOnInit中的sessionStorage对象,但调用没有按我预期的方式进行 期望值: --应用程序组件-ngOnI

我正在使用Angular 6开发一个应用程序,我正在寻求一些帮助/指导。下面是我的应用程序组件

app.component.html

--标题--

--路由器出口--

--页脚--

我正在调用两个可观察的http服务来获取app.component的ngOnInit中的数据,并将值存储在浏览器sesionStorage中。这两个调用是一个接一个地进行的。我正在尝试读取子组件的ngOnInit中的sessionStorage对象,但调用没有按我预期的方式进行

期望值:

--应用程序组件-ngOnInit-服务1调用--

--应用程序组件-ngOnInit-服务2调用--

--应用程序组件-ngOnInit——将结果存储到会话存储中--

--子组件-ngOnInit-从sessionStorage读取对象--

实际值:

--应用程序组件-ngOnInit-服务1调用--

--子组件-ngOnInit-从sessionStorage读取对象--

--应用程序组件-ngOnInit-服务2调用--

--应用程序组件-ngOnInit——将结果存储到会话存储中--

由于子组件无法从sessionStorage读取对象,因此会失败。我想知道我在这里错过了什么


TIA

您的可观察对象异步运行,因此您必须等待。了解rxjs中的高阶映射。该行为表明,在服务2调用完成之前,子组件已经初始化。一旦组件被放入html中,ngOnInit就会被触发。最简单的方法是,将子组件包装到容器中,并使用boolean和ngIf隐藏它。一旦存储在sessionStorage中,请将boolean设置为true。如果上面的解释不容易,你想看一些代码吗