Ng-if字符串在for循环中时等于null

时间:2019-04-02 19:23:07

标签: angular angular-material

尝试获取我的字符串值,而不是在Ng-if为false时不显示。我读过'!'字符串值上的值应使其返回false,但无论如何它一直在进行。我认为这可能是因为我没有从ngfor正确获取变量,但是我不确定。

我尝试了label =“”,它也做同样的事情,而且label.tostring()=''也是如此。

 <mat-chip-list *ngFor = "let label of testValue2">
            <mat-chip ng-if="!label">{{label}}</mat-chip>
 </mat-chip-list>

我的预期结果是它返回false并且不确定垫芯片

谢谢大家

2 个答案:

答案 0 :(得分:0)

为此的指令是*ngIf="!label"而不是ng-if="!label"。 而!label通常是false enter image description here

答案 1 :(得分:0)

根据官方documentation of ngIf

您刚刚在语法上犯了一个错误,应该在不使用-的情况下使用它,并且像这样*开头使用*ngIf,请检查以下示例。

<mat-chip-list *ngFor="let label of testValue2">
           <mat-chip *ngIf="!label">{{label}}</mat-chip>
</mat-chip-list>

但是如果它位于<ng-template></ng-template>上,语法会有些不同

<mat-chip-list *ngFor="let label of testValue2">
  <ng-template [ngIf]="!label">
    <mat-chip>{{label}}</mat-chip>
  </ng-template>
</mat-chip-list>

此指令还有一个else

<mat-chip-list *ngFor="let label of testValue2">
           <mat-chip *ngIf="!label; else secondOption">{{label}}</mat-chip>
           <ng-template #secondOption>
             <mat-chip>Second Option</mat-chip>
           </ng-template>
</mat-chip-list>

如果*ngIfelseng-template上,则还有另一种语法。

<mat-chip-list *ngFor="let label of testValue2">
  <ng-template [ngIf]="!label" [ngIfElse]="secondOption" ]>
    <mat-chip>{{label}}</mat-chip>
  </ng-template>
  <ng-template #secondOption>
    <mat-chip>Second Option</mat-chip>
  </ng-template>
</mat-chip-list>