Angular 角度5*ngIf else渲染div,尽管没有内容

Angular 角度5*ngIf else渲染div,尽管没有内容,angular,typescript,firebase,google-cloud-firestore,Angular,Typescript,Firebase,Google Cloud Firestore,我正在使用 角度5.2 Firestore 使用*ngIf isContent-else-noContent,我试图呈现一个只有在数据填充时才可见的对象。逻辑没有击中else语句。即使没有数据,它也在呈现内容。我已经通读了这些,看起来我的语法是正确的。我做错了什么 这是密码 <ng-container *ngIf="months2025 | async as months; else nocontent"> #### RENDERING REGARDLESS OF MONTHS

我正在使用

角度5.2

Firestore

使用
*ngIf isContent-else-noContent
,我试图呈现一个只有在数据填充时才可见的对象。逻辑没有击中else语句。即使没有数据,它也在呈现内容。我已经通读了这些,看起来我的语法是正确的。我做错了什么

这是密码

<ng-container *ngIf="months2025 | async as months; else nocontent">

  #### RENDERING REGARDLESS OF MONTHS2025 ####
  <div class="column">
    <h1>2025</h1> #### <-- THIS SHOWS UP ####
    <ul>
      <li *ngFor="let month of months">
        <a href={{month.url}}> {{ month.fileName }} </a>
      </li>
    </ul>
  </div>

</ng-container>

#### NOT RENDERING WHEN NOCONTENT ####
<ng-template #nocontent>
</ng-template>

看起来您正在从您的可观察对象(即,
[]
)中获取一个空数组,它是

您还需要检查长度

正如我在评论中提到的,允许在中进行这种检查的构造存在一个开放的问题

一种解决方法是,当数组为空时,使用映射强制未定义/null

 this.months2025 = this.monthsArray2025.valueChanges().pipe(map(mnths=>mnths && mnths.length>0?mnths:undefined));
另一个是使用两种不同的
*ngIf
,正如@John

所提到的,因此,关于这个主题有一个简单的定义。目前,我发现的最简单的解决方法是一对*ngIf容器

<ng-container *ngIf="months2025 | async as months">
  <ng-container *ngIf="months.length > 0; else nocontent">
    <div class="column">
      <li *ngFor="let month of months">
        <a href={{month.url}}> {{ month.fileName }} </a>
      </li>
    </div>
  </ng-container>
</ng-container>

<ng-template #nocontent>
</ng-template>




有效地命中else语句,但在我使用数据填充Month2025时(例如,当长度>0为真时)不会显示。抱歉,我检查的是可观察的长度而不是数组。试试updateHmm。此
*ngIf=“month2025 |异步为月和月.length>0;”和此*ngIf=“(month2025 |异步为月和月.length>0);”和此*ngIf=“(month2025 |异步为月)和月.length>0;”和此*ngIf=“(month2025 |异步为月)和月.length>0);”`所有这些都会导致控制台中的模板分析错误:
意外标记&&
如果此更改的标记不起作用,我将稍后尝试发布。。。我在外面。
<ng-container *ngIf="months2025 | async as months">
  <ng-container *ngIf="months.length > 0; else nocontent">
    <div class="column">
      <li *ngFor="let month of months">
        <a href={{month.url}}> {{ month.fileName }} </a>
      </li>
    </div>
  </ng-container>
</ng-container>

<ng-template #nocontent>
</ng-template>