如何在模板中使用* ngFor编写css类

时间:2018-04-01 04:07:31

标签: angular

我正在尝试在angular4 * ngFor中编写以下内容 我想要的东西:   enter image description here

      public stars: any[] = new Array(5);

        <ul class="rating inline-ul">
          <li *ngFor="let star of stars; let i = index">
            <i class="fa" *ngIf="starValue >= i + 0.5" 
            [ngClass]="{'fa-star-half-o amber-text': starValue >= i + 0.5 
            && starValue < i + 1, 'fa-star amber-text': starValue >= i + 1}">
           </i>
          </li>
        </ul>

不幸的是,上面的代码给了我这个:

enter image description here

我怎样才能实现这个目标,* ngFor?

3 个答案:

答案 0 :(得分:2)

除了else *ngIf的{​​{1}}部分外,您完全正确。

<div class="rating inline-ul">
 <span *ngFor="let star of stars; let i = index">
  <i class="fa" *ngIf="starValue >= i + 0.5; else star" [ngClass]="{
    'fa-star-half-o amber-text': starValue >= i + 0.5 && starValue < i + 1, 
    'fa-star amber-text': starValue >= i + 1
  }">
  </i>
  <!-- else part -->
  <ng-template #star>
      <i class="far fa-star"></i>
  </ng-template>
 </span>
</div>

答案 1 :(得分:1)

以下将是合适的:

<ul class="rating inline-ul">
  <li *ngFor="let star of stars; let i = index">
    <i   
    [class.fas]="i+0.5 < starValue || i+0.5 == starValue" 
    [class.far]="i > starValue"  
    [class.fa-star]="i+0.5 < starValue || i > starValue"  
    [class.fa-star-half]="i+.5 == starValue" >
    </i>
    <span *ngIf="i+.5 < starValue">fas fa-star</span>
    <span *ngIf="i+.5 == starValue">fas fa-star-half</span>
    <span *ngIf="i > starValue">far fa-star</span>
  </li>
</ul>

答案 2 :(得分:0)

Yo可以从以下StackBlitz URL找到实现: https://stackblitz.com/edit/angular-kbmtmv