如果我有一些 Observable data$,我可以as在 Angular 中使用如下:
<ng-template #loading>Loading...</ng-template>
<ng-container *ngIf="(data$ | async) as data; else loading">
<div *ngFor="let item of data">...</div>
</ng-container>
Run Code Online (Sandbox Code Playgroud)
这真的很酷也很有用,因为它避免了data$多次订阅。但是,如果我想避免这样做但留在同一个容器中怎么办?理想情况下,类似(显然不起作用)
<ng-container let-data="data$ | async">
<ng-container *ngIf="!data">Loading</ng-container>
<!-- ... -->
</ng-container>
Run Code Online (Sandbox Code Playgroud)
或者
<ng-container *let="(data$ | async) as data">
<ng-container *ngIf="!data">Loading</ng-container>
<!-- ... -->
</ng-container>
Run Code Online (Sandbox Code Playgroud)
换句话说,我想利用as绑定来避免多个订阅,但我实际上并不想有条件地呈现该容器。
这可能吗?感觉应该有一个我遗漏的简单答案。:-)
顺便说一句,我当然知道我可以这样做
data$.takeUntil(this.destroy$).subscribe(data => this.data = data);
Run Code Online (Sandbox Code Playgroud)
在我的组件类中,但我想知道是否有办法避免这种情况并直接在模板中处理它。
| 归档时间: |
|
| 查看次数: |
5171 次 |
| 最近记录: |