【问题标题】:Alternate column order using ngFor使用 ngFor 的交替列顺序
【发布时间】:2019-01-17 05:31:22
【问题描述】:

如何使用 ngFor 更改每一行的列顺序?

例如,此处的图像将始终位于右侧。我该怎么做才能在每一行中交替显示图像在左侧显示一个,在右侧显示一个,依此类推?

<div class="row" *ngFor="let servicio of servicios">
  <div class="col-lg-5">
    {{ servicio.titulo }}
  </div>
  <div class="col-lg-7">
    <img src="{{ servicio.imagen }}" alt="">
  </div>
</div>

【问题讨论】:

    标签: angular bootstrap-4 ngfor


    【解决方案1】:

    您可以在*ngFor 中使用local variables available,例如evenodd,用两个ngIf 指令交替列的顺序。其中一个使titulo 成为具有偶数索引的行的第一列,另一个使其成为具有奇数索引的行的最后一列。

    <div class="row" *ngFor="let servicio of servicios; let even=even">
      <div *ngIf="even" class="col-lg-5">
        {{ servicio.titulo }}
      </div>
      <div class="col-lg-7">
        <img src="{{ servicio.imagen }}" alt="">
      </div>
      <div *ngIf="!even" class="col-lg-5">
        {{ servicio.titulo }}
      </div>
    </div>
    

    请参阅this stackblitz 以获取演示。

    【讨论】:

      【解决方案2】:

      我不是 css 专业人士,但我认为使用 ngClass 可以实现您想要的目标

      您需要进行这些更改。

      <div class="row" *ngFor="let servicio of servicios; let i = index">
        <div class="col-lg-5" [ngClass]="{'align-left': i % 2 == 0, 'align-right': i%2 != 0}">
        {{ servicio.titulo }}
      </div>
      <div class="col-lg-7">
        <img src="{{ servicio.imagen }}" alt=""
             [ngClass]="{'align-left': i % 2 != 0, 'align-right': i%2 == 0}">
      </div>
      

      注意它们是“切换”的,当i % 2 == 0 和图像向右对齐时,标题显示在左侧。

      【讨论】:

      • 请注意,您可以利用evenodd 变量使语法更具可读性(不使用i % 2 == 0)。您可以查看我的答案,了解如何使用 even 的示例。
      • 不知道你能做到这一点,很好的答案! @ConnorsFan
      猜你喜欢
      • 1970-01-01
      • 2019-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-09
      • 2012-09-03
      • 2017-03-29
      • 2019-10-30
      相关资源
      最近更新 更多