我在 SSR 上运行的异步管道有问题。没有错误,只有无限循环(似乎服务器正在等待可观察的结果被解析)。
我在用:
- @nestjs/ng-universal
- 角9
- 火力基地
- 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/通用。