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

Angular/Rxjs管道异步不适用于ssr?,angular,rxjs,nestjs,server-side-rendering,angular-universal,Angular,Rxjs,Nestjs,Server Side Rendering,Angular Universal,我对SSR上运行的异步管道有一个问题。没有错误,只有一个无限循环(似乎服务器正在等待可观察到的问题得到解决) 我正在使用: @nestjs/ng通用 角度9 火基 Rxjs 像这样一个简单的例子是有效的: <p>{{ observable | async }}</p> 更新日期:2020年6月16日 当我们在组件中删除OnPush检测策略的所有用法时,SSR模式就可以工作,即使在结构指令中使用了async 因此,这似乎表明在结构化指令中同时使用OnPush和async在

我对SSR上运行的异步管道有一个问题。没有错误,只有一个无限循环(似乎服务器正在等待可观察到的问题得到解决)

我正在使用:

  • @nestjs/ng通用
  • 角度9
  • 火基
  • Rxjs
  • 像这样一个简单的例子是有效的:

    <p>{{ observable | async }}</p>
    
    更新日期:2020年6月16日

    当我们在组件中删除OnPush检测策略的所有用法时,SSR模式就可以工作,即使在结构指令中使用了async

    因此,这似乎表明在结构化指令中同时使用OnPush和async在SSR模式下不起作用

    注意


    我们将
    nest.js
    用于SSR/Universal。

    当我们使用OnPush变更检测策略时,我们基本上是在我们特别需要的时候检测变更

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

    因此,在这里,你的两个概念正在发生冲突。要么更改检测策略,要么更改当前用户$
    可观察对象的引用


    我建议您更改此处的检测策略。

    您在组件中的何处定义了可观察对象?注意,该用户有一个类似的问题,它只是通过在url中添加index.html来加载:@SantiBarbat我用信息更新了问题(我与OP在同一个团队中),我们也遇到了这个问题。感觉这是一个我们应该向AngularThank报告的问题,但我理解变更检测是如何工作的,包括默认和OnPush。我们确实将检测策略更改为默认(即自动),然后SSR模式工作。但在同一项目中使用OnPush和异步管道时,SSR模式不起作用。
    <p *ngIf="(observable$ | async) > 5">{{ observable$ | async }}</p>
    
    <p *ngFor="let item of items | async">{{ item }}</p>
    
    <ng-container *ngIf="currentUser$ | async; else loadingUser">
    
      ngOnInit(): void {
        this.currentUser$ = this.authService.currentUser$;
      }