Angular 通用预渲染导致设置空传输状态
我在应用程序中使用Angular Universal和预渲染。在我的应用程序中,我将以下路径设置为预渲染:Angular 通用预渲染导致设置空传输状态,angular,angular-universal,Angular,Angular Universal,我在应用程序中使用Angular Universal和预渲染。在我的应用程序中,我将以下路径设置为预渲染: / /about /login 以下路径是唯一使用传输状态的路径: /:id 奇怪的是,在构建和运行节点服务器之后,查看任何路径的源,我可以在源的底部看到一个空传输状态的脚本标记。根路径中使用的任何组件都不使用传输状态或任何其他路径,除了/:id <script id="app-state" type="application/json">{}</script>
/
/about
/login
以下路径是唯一使用传输状态的路径:
/:id
奇怪的是,在构建和运行节点服务器之后,查看任何路径的源,我可以在源的底部看到一个空传输状态的脚本标记。根路径中使用的任何组件都不使用传输状态或任何其他路径,除了/:id
<script id="app-state" type="application/json">{}</script>
为什么在预渲染时传输状态设置为空状态键?传输状态
set()
仅在/:id
页面上使用的服务方法中调用,但每个路由上都设置了空状态。这是由我的生成引起的。事情发生的混乱;由Web包生成的server.js使用的文件需要预先呈现。如果是,您将获得复制的脚本标记用于状态传输,因为TransferState
在不使用它的页面上设置空对象是正常的。一旦server.js检索到文件以在服务器端呈现非预呈现页面,它就会得到一个预呈现模板,其中已经有一个状态转移脚本标记
澄清一下,是我的package.json脚本出了问题。需要这样做:
这是我的身材造成的。事情发生的混乱;由Web包生成的server.js使用的文件需要预先呈现。如果是,您将获得复制的脚本标记用于状态传输,因为
TransferState
在不使用它的页面上设置空对象是正常的。一旦server.js检索到文件以在服务器端呈现非预呈现页面,它就会得到一个预呈现模板,其中已经有一个状态转移脚本标记
澄清一下,是我的package.json脚本出了问题。需要这样做:
this.transferState.remove(stateKey);
this.transferState.set(stateKey, data);