Angular 4 - 在ngFor指令上显示/隐藏元素

时间:2017-09-01 16:37:47

标签: angular list show

我有一个列表列表,我想根据属性值隐藏/显示内部列表

<md-list *ngFor="let el of data">
    <md-list-item *ngFor="let item of el.items" >
      <h4 mdSubhead]er>{{item.name}}</h4>
    </md-list-item>h4
  </md-list>

我尝试过使用*ngIf,但Angular4只允许对一个元素进行一次模板绑定。

我该如何实现这个目标呢?

4 个答案:

答案 0 :(得分:3)

您可以添加额外的div条件或 ng-container ,这对角度来说是最好的

<md-list *ngFor="let el of data">
  <ng-container *ngIf="el.something">
    <md-list-item *ngFor="let item of el.items" >
      <h4 mdSubheader>{{item.name}}</h4>
    </md-list-item>
  </ng-container>
 </md-list>

答案 1 :(得分:2)

使用ng-container(不需要额外的元素),同时有条件地使用*ngIfhide/show DOM。

<md-list *ngFor="let el of data">
  <ng-container *ngIf="el.show">
    <md-list-item *ngFor="let item of el.items" >
      <h4 mdSubhead]er>{{item.name}}</h4>
    </md-list-item>
  </ng-container>
</md-list>

答案 2 :(得分:1)

我认为最好的方法可能是先获取数据,然后删除不需要的项目并迭代剩余的列表。但如果确实需要模板,那么你可以使用ng-template和long * ngFor版本,所以类似:

<ng-template ngFor let-el [ngForOf]="data" let-i="index">
 <md-list #el>
 <ng-template ngFor let-item [ngForOf]="el.items" let-i="index">
  <md-list-item #item>
    </md-list-item>h4
  </ng-template>
 </md-list>
</ng-template>

答案 3 :(得分:0)

使用此处提到的<ng-container><ng-container> to the rescue

<md-list *ngFor="let el of data">
    <ng-container *ngIf="your-condition-here">
        <md-list-item *ngFor="let item of el.items" >
            <h4 mdSubhead]er>{{item.name}}</h4>
        </md-list-item>
    </ng-container>
</md-list>