Angular/Rxjs 管道异步不适用于 s-s-r?

     2023-03-10     59

关键词:

【中文标题】Angular/Rxjs 管道异步不适用于 s-s-r?【英文标题】:Angular/Rxjs pipe async does not work with s-s-r? 【发布时间】:2020-09-26 11:17:39 【问题描述】:

我在 s-s-r 上运行的异步管道存在问题。没有错误,只有一个无限循环(似乎服务器正在等待解析 observable)。

我正在使用:

    @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>

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

2020 年 8 月 6 日更新

当我在http://localhost:4200 之后添加 index.html 时,应用程序加载

异步在模板中是这样的:

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

并且currentUser$是在组件的ngOnInit方法中设置的:

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

2020 年 6 月 16 日更新

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

所以这似乎表明在结构指令中使用 OnPush TOGETHER 和异步在 s-s-r 模式下不起作用。

注意

我们将nest.js 用于 s-s-r/通用。

【问题讨论】:

你在组件的什么地方定义了 observable? 请注意,此用户遇到了类似的问题,即仅通过将 index.html 添加到 url:***.com/questions/54924369/… 来加载它 @SantiBarbat 我用信息更新了问题(我与 OP 在同一个团队) 我们也刚刚做到了这一点。感觉这是一个我们应该向 angular 报告的问题 【参考方案1】:

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

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

所以在这里,您的两个概念都发生了冲突。要么改变你的检测策略,要么改变 currentUser$ observable 的引用。

我建议你应该在这里更改检测策略。

【讨论】:

谢谢,但我了解更改检测的工作原理,包括默认值和 OnPush。我们确实将检测策略更改为默认策略(即自动),然后 s-s-r 模式工作。但是 OnPush 和异步管道在同一个项目中,s-s-r 模式不起作用。

在模板中使用异步管道可观察到的不适用于单个值

】在模板中使用异步管道可观察到的不适用于单个值【英文标题】:ObservablewithAsyncPipeintemplateisnotworkingforsinglevalue【发布时间】:2017-01-1020:07:23【问题描述】:我有一个组件向我的服务请求Observable对象(即底层的http.get返回一个... 查看详情

在 angular rxjs 中寻找类似 OrElse 的东西在管道中查找函数

】在angularrxjs中寻找类似OrElse的东西在管道中查找函数【英文标题】:LookingforsomethinglikeOrElseinangularrxjsfindfunctionwhilepiping【发布时间】:2020-02-2918:16:01【问题描述】:我有以下代码。我想要实现的是当“查找”功能在可观察的加... 查看详情

angular/rxjs对一个observable的多个订阅(代码片段)

我正在尝试构建一个复杂的反应形式,我需要根据其他2个下拉的值填充一个下拉列表。我已经弄清楚如何在更改一个下拉列表时从服务获取值。但它不适用于2,因为第二个订阅取代了第一个订阅。我是否需要找到一种同步方式... 查看详情

Azure 管道不适用于生产

】Azure管道不适用于生产【英文标题】:Azurepipelinenotworkingforproduction【发布时间】:2021-12-2403:37:52【问题描述】:我想使用azure管道部署3个服务总线资源。amit-dev-用于开发环境。amit-tst-用于测试环境。amit-prd-用于PRD环境test和dev不... 查看详情

管道不适用于信号量

】管道不适用于信号量【英文标题】:Pipedoesn\'tworkwithsemaphores【发布时间】:2015-04-1412:22:12【问题描述】:我想在3个子进程之间创建两个管道,但我首先想让第一个管道pipe1在两个fork进程之间工作。问题是,当我从第一个进程... 查看详情

suppressWarnings() 不适用于管道运算符

】suppressWarnings()不适用于管道运算符【英文标题】:suppressWarnings()doesn\'tworkwithpipeoperator【发布时间】:2018-02-2415:34:04【问题描述】:我正在尝试使用suppressWarnings()函数来抑制警告。令人惊讶的是,它在正常使用时会删除警告,... 查看详情

R 管道 (%>%) 不适用于复制功能

】R管道(%>%)不适用于复制功能【英文标题】:Rpiping(%>%)doesnotworkwithreplicatefunction【发布时间】:2017-09-0302:44:27【问题描述】:我正在尝试学习管道函数(%>%)。当试图从这行代码转换到另一行时,它不起作用。----R代码--原版-... 查看详情

管道不适用于 echo 命令 [重复]

】管道不适用于echo命令[重复]【英文标题】:Pipingnotworkingwithechocommand[duplicate]【发布时间】:2016-05-0902:06:13【问题描述】:当我运行以下Bash脚本时,我希望它打印Hello。相反,它会打印一个空行并退出。echo\'Hello\'|echo为什么piping... 查看详情

詹金斯管道中的文件存在不适用于 $variant

】詹金斯管道中的文件存在不适用于$variant【英文标题】:fileExistsinjenkinspipelinenotworkingwith$variant詹金斯管道中的文件存在不适用于$variant【发布时间】:2021-05-1900:16:29【问题描述】:在詹金斯管道中变量是从作业配置中读取的vari... 查看详情

grep 的管道不适用于尾部? [复制]

】grep的管道不适用于尾部?[复制]【英文标题】:Pipingofgrepisnotworkingwithtail?[duplicate]【发布时间】:2014-12-0908:15:03【问题描述】:我正在尝试通过检查日志来调试一种方案,这是我的命令tail-feclipse.log|grep\'enimation\'|grep-i\'tap\'基本... 查看详情

C命名管道不适用于多进程

】C命名管道不适用于多进程【英文标题】:Cnamedpipedoesnotworkwithmultiprocess【发布时间】:2021-07-2305:02:07【问题描述】:我想在父进程中创建一个命名管道,然后在子进程中向它写入一个字符串,最后在父进程中读取这个字符串。... 查看详情

sklearn 管道中的 set_params() 不适用于 TransformedTargetRegressor

】sklearn管道中的set_params()不适用于TransformedTargetRegressor【英文标题】:set_params()inskleanpipelinenotworkingwithTransformTargetRegressor【发布时间】:2021-11-2311:17:46【问题描述】:我想对我的随机森林中的一棵树进行预测。但是,如果我将管... 查看详情

composer缓存不适用于bitbucket管道构建(代码片段)

我在我的Bitbucket管道中找到了这个:pipelines:branches:develop:-step:caches:-composername:unittests-Deliveryimage:totersapp/laravel-docker:phpredisscript:-echo"memory_limit=512M">/usr/local/etc/php/conf.d/memory 查看详情

python中的多个字符替换字符串不适用于管道[重复]

】python中的多个字符替换字符串不适用于管道[重复]【英文标题】:pythonmultiplecharactersreplaceinstringnotworkingwithpipe[duplicate]【发布时间】:2021-10-1303:00:52【问题描述】:我正在尝试匹配和替换字符串中的多个字符。str1=\'US$0.18\'reg=\'A... 查看详情

当重采样方法不适用于文本时,如何为文本分类创建 SMOTE 管道步骤?

...当重采样方法不适用于文本时,如何为文本分类创建SMOTE管道步骤?【英文标题】:HowwouldIcreateaSMOTEpipelinestepfortextclassification,whentheresamplingmethoddoesnotworkwithtext?【发布时间】:2017-09-2118:52:51【问题描述】:我有一个多标签分类问... 查看详情

生成异步进程不适用于 pkexec

】生成异步进程不适用于pkexec【英文标题】:spawnasyncprocessnotworkingwithpkexec【发布时间】:2017-02-2504:00:04【问题描述】:我当前的gksudo命令适用于Process.spawn_async_with_pipes。但是,如果我用pkexec切换gksudo,它不会显示pkexec窗口,而... 查看详情

为啥我的容器注册表适用于 gitlab 自动部署,但不适用于我的自定义管道?

...容器注册表适用于gitlab自动部署,但不适用于我的自定义管道?【英文标题】:Whydoesmycontainerregistryworkforgitlabautodeploybutnotformycustompipeline?为什么我的容器注册表适用于gitlab自动部署,但不适用于我的自定义管道?【发布时间】:... 查看详情

Angular4按过滤器分组不适用于管道:ngx-pipes

】Angular4按过滤器分组不适用于管道:ngx-pipes【英文标题】:Angular4groupbyfilternotworkingwithpipe:ngx-pipes【发布时间】:2019-03-2804:00:03【问题描述】:我真的想过滤我需要的数据,按价格和性别过滤产品。我使用ngx-pipe,构建管道对数... 查看详情