代码之家  ›  专栏  ›  技术社区  ›  inorganik

通用预呈现导致设置空传输状态

  •  0
  • inorganik  · 技术社区  · 6 年前

    我使用的是角度通用,以及我的应用程序中的预渲染。在我的应用程序中,我将以下路径设置为预渲染:

    /
    /about
    /login
    

    /:id
    

    任何路径 我可以在源代码的底部看到一个空传输状态的脚本标记。根路径中使用的组件不使用传输状态或任何其他路径,除了 /:id

    <script id="app-state" type="application/json">{}</script>
    

    如果从构建过程中排除预渲染,则不会发生这种情况。

    问题是 第页,我使用的是传输状态 transferState.get() 打电话找不到任何东西,因为我的 transferState.set() call在空的脚本标记之后附加另一个脚本标记,该标记具有相同的id get() call找到第一个空的。我的解决方法是依次调用remove和set:

    this.transferState.remove(stateKey);
    this.transferState.set(stateKey, data);
    

    为什么在预呈现时传输状态设置为空状态键?转移状态 set() 仅在上使用的服务方法中调用 页面,但每个路由都设置了空状态。

    0 回复  |  直到 6 年前
        1
  •  0
  •   inorganik    6 年前

    这是我的身材造成的。事情发生了混乱;生成了网页包使用的文件服务器.js需要 TransferState 在不使用空对象的页面上设置空对象。一次服务器.js检索到要在服务器端呈现非预呈现页的文件时,它得到了一个预呈现模板,其中已经有一个状态转移脚本标记。

    澄清这是我的错包.json不正常的脚本。事情需要这样发生:

    1. 角度触针构建
    2. 预渲染
    推荐文章