【问题标题】:Using the same *ngFor loops in a template在模板中使用相同的 *ngFor 循环
【发布时间】:2017-04-26 22:42:16
【问题描述】:

阅读一本书时,我遇到了一个示例,它在同一个模板中使用了两次相同的 *ngFor 循环。我试图重构嵌套组件并发送不起作用的“i”变量。

该示例使用引导轮播,需要循环显示指示器按钮和幻灯片的类别。

您知道不重复相同循环的更好的编写方法吗?

<!-- Indicators -->
<ol class="carousel-indicators">
  <li data-target="#welcome-products"
      *ngFor="let category of slideCategories;let first=first; let i=index"
      attr.data-slide-to="{{i}}" [ngClass]="{active: first}"></li>
</ol>

<!-- Content -->
<div class="carousel-inner" role="listbox">

  <div *ngFor="let category of slideCategories;let first=first"
        class="carousel-item" [ngClass]="{active: first}">
    <db-category-slide
      [category]="category" (select)="selectCategory($event)">
    </db-category-slide>
  </div>

这是 db-category-slide

的模板
<div class="card">
<img class="card-img-top img-fluid center-block product-item" src="{{category.image}}" alt="{{category.title}}">
<div class="card-block">
    <h4 class="card-title">{{category.title}}</h4>
    <p class="card-text">{{category.desc}}</p>
    <button class="btn btn-primary" (click)="browse()">Browse</button>
</div>
</div>

组件具有相同的输入/输出,如下所示:

@Input() category: Category;
@Output() select: EventEmitter<Category> = new EventEmitter<Category>();

【问题讨论】:

    标签: twitter-bootstrap angular angular2-template angular2-directives


    【解决方案1】:

    如下更改您的Indicators HTML:

    <ol class="carousel-indicators">
      <li data-target="#welcome-products"
          *ngFor="let category of slideCategories;let first=first; let i=index"
          [attr.data-slide-to]="i" [ngClass]="{active: first}"></li>
    </ol>
    

    【讨论】:

    • 我会投赞成票,因为这就是我们应该绑定的方式。但这并不能解决问题。我认为是因为轮播指示器出于某种原因必须在轮播内部才能工作。
    猜你喜欢
    • 2016-11-17
    • 2021-06-11
    • 1970-01-01
    • 2020-07-24
    • 1970-01-01
    • 2021-07-15
    • 2016-09-06
    • 1970-01-01
    • 2019-09-20
    相关资源
    最近更新 更多