我试图了解ngIf / else的工作原理,也许这很愚蠢,但我不明白。 基本上,如果我的数组已满(这可以正常工作),我需要打印一些内容,如果我的数组是空的(这是行不通的),则需要打印其他内容。 这是我的数组,其中包含来自过滤的json数组的元素。
public gbrumdatafiltered : Array<any> = [];
这是代码。 就像我说的那样,当gbrumdatafiltered中有数据时,它会打印“ true”,因此该条件有效,但是如果数组为空(如屏幕截图所示),则不会发生任何事情。
<ion-card *ngFor="let gbrumd of gbrumdatafiltered">
<div *ngIf="gbrumd?.length; then gbrumdknown; else gbrumdunknown"></div>
<ng-template #gbrumdknown>true</ng-template>
<ng-template #gbrumdunknown>false</ng-template>
</ion-card>
我尝试了一些变化,例如:
<div *ngIf="gbrumdatafiltered?.length; then gbrumdknown; else gbrumdunknown"></div>
--
<div *ngIf="gbrumdatafiltered?.length; then gbrumdknown; else gbrumdunknown"></div>
--
<div *ngIf="gbrumdatafiltered.length > 0; then gbrumdknown; else gbrumdunknown"></div>
但仍然行不通
这是cconsole.log(this.gbrumdatafiltered);命令
因此,数组为空。
答案 0 :(得分:1)
您这里只是一个逻辑错误,您需要将条件设置得更高一些...
<ng-container*ngIf="gbrumdatafiltered?.length; then gbrumdknown; else gbrumdunknown">
</ng-container>
<ng-template #gbrumdknown>
<ion-card *ngFor="let gbrumd of gbrumdatafiltered">
<div>true</div>
</ion-card>
</ng-template>
<ng-template #gbrumdunknown>
<ion-card *ngIf="submitted">
<div>false</div>
</ion-card>
</ng-template>