如何使用角度异步管道检查 *ngIf 内部的长度?

Jon*_*Sud 1 angular-ng-if angular

如何*ngIf使用异步管道检查内部长度?

我尝试这样做,但它不起作用。正确的做法是什么?

<mat-menu #favoriteMenu="matMenu">
  <ng-container *ngIf="items$ | async as items && items.length; else empty">
    <button mat-menu-item *ngFor="let item of items">
      ...
    </button>
  </ng-container>
  <ng-template #empty>no favorite here</ng-template>
</mat-menu>
Run Code Online (Sandbox Code Playgroud)

tom*_*ler 6

我认为最好的解决方案仍然是将其分成 2 个容器。这并不漂亮,但据我所知,这是实现您想要实现的目标同时避免重复订阅Observable.

<ng-container *ngIf="items$ | async as items; else empty">
  <ng-container *ngIf="items?.length > 0; else empty">
     ...
  </ng-container>
</ng-container>
<ng-template #empty>no favorite here</ng-template>
Run Code Online (Sandbox Code Playgroud)

  • 我认为没有单行解决方案;)您可以重新排列代码,以便在第一个 if 为 false 时仍然显示空模板 (2认同)
  • 这是你能得到的最好的解决方案 Jon Sud,你不能指望有一个不存在的解决方案 (2认同)