Angular:嵌套的异步管道使用安全吗?

问题描述 投票:0回答:1

我找不到与此相关的任何文档,所以在这里。我在模板中使用了异步管道:

<component [aliases]="(users$ | async).profile.aliases$ | async"/>

aliases$发出时是否正确取消订阅users$?如果包装元素上有*ngIf怎么办?

angular rxjs rxjs6 rxjs-observables
1个回答
2
投票

为了避免使用多个async管道,请在课程中尝试使用此方法>>

aliases$ = this.users$.pipe(
  switchMap(users => users.profile.aliases$),
)

<component [aliases]="aliases$ | async"/>

关于您的安全问题。订阅内部观察将是活的。检查此stackblitz https://stackblitz.com/edit/angular-f88kfn

[如果我们深入研究AsyncPipe的来源,我们会发现ngOnDestroy挂钩中的管道取消订阅。但是,如果“外部”可观察对象在“流”中仅具有新值,则不会调用它。因此,只需使用switchMap和一个async管道即可。

我希望能帮上忙。

© www.soinside.com 2019 - 2024. All rights reserved.