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

Angular: are nested async pipe usage safe?

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

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

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

为避免使用多个 async 管道,请在 class

中尝试此操作
aliases$ = this.users$.pipe(
  switchMap(users => users.profile.aliases$),
)

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

关于您关于安全的问题。对内部可观察对象的订阅将有效。检查这个 stackblitz https://stackblitz.com/edit/angular-f88kfn.

如果我们深入研究 AsyncPipe 的来源,我们会发现管道在 ngOnDestroy 钩子中取消订阅。但如果 "outer" observable 在 "stream" 中只有新值,则不会调用它。所以只需使用 switchMap 和一个 async 管道。

希望对您有所帮助。