Angular/Rxjs 管道异步不适用于 ssr?

2023-12-24

我在 SSR 上运行的异步管道有问题。没有错误,只有无限循环(似乎服务器正在等待可观察的结果被解析)。

我在用:

  1. @nestjs/ng-universal
  2. 角9
  3. 火力基地
  4. Rxjs

像这样的简单案例有效:

<p>{{ observable | async }}</p>

但使用结构指令不起作用:

ngIf

<p *ngIf="(observable$ | async) > 5">{{ observable$ | async }}</p>

Ngfor

<p *ngFor="let item of items | async">{{ item }}</p>

使用异步是一种很好的做法,因为它可以避免手动取消订阅,从而避免组件被销毁时发生内存泄漏。但是,使用手动取消订阅是可行的。

更新 08/06/2020

当我添加index.html之后http://本地主机:4200 http://localhost:4200应用程序加载

异步在模板中是这样的:

<ng-container *ngIf="currentUser$ | async; else loadingUser">

和 currentUser$ 设置在ngOnInit组件方法:

  ngOnInit(): void {
    this.currentUser$ = this.authService.currentUser$;
  }

更新 16/06/2020

当我们删除组件中所有 OnPush 检测策略的使用时,SSR 模式就可以工作,即使在结构指令中使用异步也是如此。

因此,这似乎表明在结构指令中将 OnPush 与 async 一起使用在 SSR 模式下不起作用。

Note

我们正在使用nest.js适用于 SSR/通用。


当我们使用 OnPush 更改检测策略时,我们基本上会在我们特别需要时检测到更改。

仅当我们更改变量的引用而不仅仅是值时,才会检测到 OnPush 更改。

所以在这里你的两个概念发生了冲突。要么改变检测策略,要么改变参考当前用户$可观察到的。

我建议你应该改变这里的检测策略。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Angular/Rxjs 管道异步不适用于 ssr? 的相关文章

随机推荐

  • 设置 PHP 的默认时区

    在我的网络应用程序中 我让用户从列表中选择他们喜欢的时区 其中包含PHP 支持的所有时区 http www php net manual en timezones php 这么说吧 POST timezone 是所选时区 e g Ameri
  • 如何向 topojson 文件添加属性?

    给定一个 data tsv 文件 例如 id code name 1 AL Alabama 2 AK Alaska 4 AZ Arizona 5 AR Arkansas 6 CA California 给定一个 topojson json
  • Google 脚本中的字符串以以下开头

    我正在为我们正在进行的一些选举编写数据转换脚本 第一部分将所有名称更改为大写 这部分脚本工作正常 但是 我对脚本的第二部分有疑问 有些 ID 会有 S S123456 有些则没有 S 123456 出于我的目的 我需要所有 ID 开头都没有
  • mybatis中返回HashMap,并在spring MVC中作为ModelAttribute使用

    我想使用 spring mvc modelAttribute 在 Jsp 页面中显示类别列表 在我的 mapper xml 文件中是
  • 使用 Newtonsoft 在 C# 中通过 JSON 模式验证 JSON

    使用 JSON Schema 验证 JSON 返回值始终为 true 使用Newtonsoft进行验证和测试here https www jsonschemavalidator net 与模式和数据 它总是返回 未发现错误 JSON 根据模
  • 在字符串中使用空字符 (C++)

    我正在温习 C 偶然发现了关于字符串 字符数组和空字符的奇怪行为 0 下面的代码 include
  • 有哪些优秀的 Ruby on Rails 博客? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我 6 个月前开始学习 Rails 到目前为止我很喜欢它背后的社区 有大量的论坛和文档资源可供使用 但
  • 如果流没有返回结果,Java 8 抛出异常[重复]

    这个问题在这里已经有答案了 我很好奇是否可以在以下情况下使用 orElseThrow 或者是否有更多 Java 8 方法来执行与 1 liner 相同的操作 Collection
  • 在页面关闭之前执行 JS 函数 |重定向[重复]

    这个问题在这里已经有答案了 问题 我正在使用 ASP NET Web 表单 C 我需要在页面关闭之前执行 JS 函数 无论以何种方式关闭 作为重定向或任何其他方法 额外信息 作为一些额外的信息 该函数将是到不同页面的 HTTP POST 我
  • git pull 通过 PHP exec IIS

    这是我经历过的最难诊断的问题 我似乎无法调用 exec call git pull output 该进程挂起 并且往往会导致 IIS 一起挂起 exec call git status output works fine 这是我所做的 生成
  • 如何找到 JXA 对象上的所有方法?

    我试图列出 JXA 对象的所有方法 我尝试了几种在浏览器中使用 JavaScript 的方法 但没有一个有效 gt gt Object getOwnPropertyNames Application Finder selection 0 g
  • ProgressBar Circle 在 android L (API 21) 上显示没有进度

    我有一个圆形进度条来倒计时 它在 kitkat 和之前的版本上完美运行 但在 android L 上 无论我设置什么进度 它总是显示一个完整的圆圈 Image http youspeakschwaebisch de progressbar
  • 在 XPath 中获取以下兄弟姐妹?

    我正在努力抓住li下面的类文本基于包含某个单词的树中较高的强标记 在本例中为 restaurants p class The location where the condo is situated offers a good choice
  • 使用 dlopen() 加载时解决动态库依赖关系

    我在加载动态库时遇到了问题dlopen 我尝试加载一个库 handle dlopen libmkl intel lp64 so RTLD LAZY 此代码失败并显示以下消息dlerror opt intel composer xe 2013
  • 预填充 WebView 文本字段

    我需要预先填写文本字段UIWebView我明白javascript是解决这个问题的最好方法 不幸的是我一无所知javascript在过去的几个小时里一直在摸索 一无所获 最新的拙劣尝试 void webViewDidFinishLoad U
  • 删除的指针指向什么?

    int a nullptr NULL before C 11 a new int 1 delete a 什么是a指向现在 它是否指向nullptr或者它是否指向被删除之前所指向的地址 其他一些答案错误地表示 该值不会改变 但确实如此 删除前
  • MVVM INotifyPropertyChanged - 线程问题?

    我刚刚开始学习 MVVM 和 WPF 很抱歉提出了愚蠢的问题 我正在使用不同的教程和示例来学习 并且我遇到了这个例子 http www codeproject com Articles 165368 WPF MVVM Quick Start
  • XMLHttpRequest POST 并在新窗口/选项卡中打开目标页面

    如何模拟Form的 POST 行动与target blank in XMLHttpRequest 即发布数据并在新选项卡中打开目标页面 gBrowser开箱即用地提供此功能 var dataStream Cc mozilla org io
  • 在 div 内仅将文本换行两行

    我想将文本包装在特定宽度的 div 内的两行内 如果文本超出两行的长度 那么我想显示省略号 有没有办法使用 CSS 来做到这一点 e g Sample text showing wrapping of text in only two li
  • Angular/Rxjs 管道异步不适用于 ssr?

    我在 SSR 上运行的异步管道有问题 没有错误 只有无限循环 似乎服务器正在等待可观察的结果被解析 我在用 nestjs ng universal 角9 火力基地 Rxjs 像这样的简单案例有效 p observable async p 但