Angular/Rxjs管道异步不适用于ssr?
我对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在
<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$;
}