2016-10-25 7 views
1

Ниже то, что я сейчас:Могу ли я повторять * ng Для произвольного количества раз, используя встроенные угловые директивы?

<div class="reviews"> 
    <a href="#"> 
     <i *ngIf="product.rating.avgStars >= 1" class="fa fa-star"></i> 
     <i *ngIf="product.rating.avgStars >= 2" class="fa fa-star"></i> 
     <i *ngIf="product.rating.avgStars >= 3" class="fa fa-star"></i> 
     <i *ngIf="product.rating.avgStars >= 4" class="fa fa-star"></i> 
     <i *ngIf="product.rating.avgStars >= 5" class="fa fa-star"></i> 
    <span class="amount">({{product.rating.reviewCount}} Reviews)</span> 
</a> 

Как вы уже догадались, он будет повторять значок звезды на количество звезд продукт имеет. Он работает как есть, однако я чувствую, что должен быть лучший способ. В идеале я хотел бы использовать:

<i *ngFor="+product.rating.avgStars" class="fa fa-star"></i>

Я знаю, что я могу потенциально использовать директивы или трубы, чтобы инкапсулировать эту функциональность; Я просто спрашиваю, есть ли способ использовать встроенные угловые директивы для произвольного повторения HTML-тега.

+2

Возможный дубликатом [Повтор HTML элемент несколько раз, используя ngFor на основе ряда] (Http: // StackOverflow. com/questions/36535629/repeat-html-element-multiple-times-using-ngfor-based-on-a-number) –

+0

Я выделил для вас разъяснения, я специально спросил о встроенных угловых директивах. Я не спрашиваю, как, я спрашиваю, есть ли способ сделать это лучше. – jake

+0

В упомянутом вопросе/ответе также упоминается использование массива. Вы можете добавить элемент 'array: Function = Array' и использовать его в шаблоне' '. Это выглядит как разумный способ сделать это. – cartant

ответ

2

Создание массива подкладочного в компоненте, который вы заселить с соответствующим количеством звезд

class RatingComponent { 
    ngOnInit() { 
    myRating = Array(numberOfStarsFromSomewhere).fill('whatever'); 
    } 
} 

<i *ngFor="let rating of myRating" class="fa fa-star"></i>