Angular 5 Universal在服务器端呈现期间等待http请求返回

Ste*_*ons 9 typescript server-side-rendering angular-universal angular

我有一个使用ngExpressEngine服务的Angular 5应用程序(遵循Angular Universal启动项目).我的应用程序有一个组件,它发出HTTP请求以显示一些数据.一切正常,但当我使用fetch作为谷歌机器人时,它返回渲染的页面,但没有数据.是否有任何使ngExpressEngine服务器在将页面呈现给用户之前等待HTTP请求?

Twi*_*her 1

我不了解 Angular 5,但是随着最新的 Angular 版本(我写这篇文章时为 7.2),我可以确认通过 a 加载的所有数据都Resolve在服务器端正确呈现,并且所有通过ngOnInithooks加载的数据,即使它是异步的。

这要归功于 Zone.js,事实上,它会跟踪所有异步操作,并onMicrotaskEmpty在异步任务队列为空时发出一个事件,让 Angular 知道页面已准备好渲染。供参考:Zone.js 在 Angular 2 中的用途是什么