【问题标题】:Angular ngfor set empty grid if condition matches如果条件匹配,Angular ngfor 设置空网格
【发布时间】:2019-10-13 05:16:32
【问题描述】:

我正在循环一个数组,它的长度可以在三列行上改变(在桌面视图上。

html

<div  class="row" >
  <div *ngFor="let indicator of fiveElements; let index = index"
    class="col-12 col-sm-6 col-md-6 col-lg-4 col-xl-4 pb-4 pl-3 pr-3 indicatorContainer">
    <div>{{index}}</div>
  </div>
</div>

ts

export class AppComponent  {
fiveElements = [1,2,3,4,5]

}

我希望当数组长度等于 4 时第三列是空的

这里有一个解释的架构

这是demo

【问题讨论】:

  • 使用*ngIf 来测试你的数组的长度,然后做你想做的事
  • 我已经更新了我的演示,希望更清楚

标签: html css angular twitter-bootstrap


【解决方案1】:

如果我理解你的问题 - 我会这样做:

<div class="row">
    <div *ngFor="let indicator of fourElements; let index = index" class="col-12 col-sm-6 col-md-6 col-lg-4 col-xl-4 pb-4 pl-3 pr-3 indicatorContainer">
        <div *ngIf="index !== 3 && fourElements.length === 4">{{index}}</div>
        <!--- third column should get empty -->
    </div>
</div>

感谢您的澄清 - 现在我知道您想要什么了 :) 您可以通过使用 ngFor 的简写语法来实现这一点:

<div class="row">
        <ng-template ngFor let-indicator [ngForOf]="fourElements" let-index="index">
            <div *ngIf="index === 2 && fourElements.length === 4" class="col-12 col-sm-6 col-md-6 col-lg-4 col-xl-4 pb-4 pl-3 pr-3 indicatorContainer">
            </div>
            <div class="col-12 col-sm-6 col-md-6 col-lg-4 col-xl-4 pb-4 pl-3 pr-3 indicatorContainer">
                <div>{{index+1}}</div>
            </div>
        </ng-template>
    </div>

【讨论】:

  • 这将隐藏第三个元素,我要推送的只有第一行中的两个元素+空列和下一行中的两个元素
  • 谢谢,我想了解 betweek *ngfor 和 ngForOf 的区别,如果我将您的解决方案与 *ngfor 一起使用,那不起作用,为什么?
  • *ngFor 只是更简洁代码的简写语法 - 最后它也是如此。 *ngFor 在您的情况下的问题是您在 div 元素上定义了 for 循环。但是你想在一个循环之间添加一个相同级别的 div - 这只有在 div 的父级循环时才有效。使用简写语法,您可以在父 ng 模板上定义它,因此您可以更好地控制它,并且可以放置另一个带有 if 条件的 div。我希望你能理解其中的区别。文档:angular.io/api/common/NgForOf#description
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-09
  • 2017-05-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-30
相关资源
最近更新 更多