首页 > 解决方案 > 当我在要迭代的元素中调用异步管道时,会创建一个共享订阅还是多个?

问题描述

有一个关于 Angular 如何处理异步管道的快速问题:给定以下代码块,如果我要调用将呈现 N 次的元素内的函数并使用异步管道将可观察的值作为参数传递给它,传递给这些函数执行的订阅是共享的还是独立的订阅?

<ng-container *ngFor="...">
  <div>{{ getSomeValue(myObservable$ | async) }}</div>
</ng-container>

谢谢!!

标签: angularrxjs

解决方案


每个异步管道都会产生一个新的订阅。因此,为避免不必要的订阅,您可以使用*ngIfapproch

<ng-container *ngIf="(myObservable$ | async) as myValue">
    <ng-container *ngFor="...">
       <div>{{ getSomeValue(myValue) }}</div>
    </ng-container>
</ng-container>

myObservable$ | async将评估并绑定到 的值myValue,然后在模板子树中无需进一步订阅即可使用它。


推荐阅读