Одна вещь, которую вы можете сделать, это создать массив с данными об элементах, а затем в вашем шаблоне использовать ngFor для отображения каждого элемента.
Итак, в ваших .ts вы создаете массив (в OnInit).
Я также создал переменную (imageFolderPath) для хранения общего пути для всех изображений.
ngOnInit() {
this.imageFolderPath = './assets/images/';
this.aMenuItems = [
{ imagePath: 'menu-image1.png', title: 'American Breakfast', ingredients: 'Tomato / Eggs / Sausage', price: 25 },
{ imagePath: 'menu-image2.png', title: 'Self-made Salad', ingredients: 'Green / Fruits / Healthy', price: 18 },
{ imagePath: 'menu-image3.jpg', title: 'Chinese Noodle', ingredients: 'Pepper / Chicken / Vegetables', price: 34 },
{ imagePath: 'menu-image4.png', title: 'Rice Soup', ingredients: 'Green / Chicken', price: 28 },
{ imagePath: 'menu-image5.png', title: 'Deli Burger', ingredients: 'Beef / Fried Potatoes', price: 46 },
{ imagePath: 'menu-image6.png', title: 'Big Flat Fried', ingredients: 'Pepper / Crispy', price: 30 },
]
}
в вашем html, вы используете только один блок для определения html, * ngFor создаст 1 для каждого элемента массива.
<div class="col-md-4 col-sm-6" *ngFor="let item of aMenuItems">
<!-- MENU THUMB -->
<div class="menu-thumb">
<a [href]="imageFolderPath + item.imagePath" class="image-popup" title="item.title">
<img [src]="imageFolderPath + item.imagePath" class="img-responsive" alt="item.title">
<div class="menu-info">
<div class="menu-item">
<h3>{{item.title}}</h3>
<p>{{item.ingredients}}</p>
</div>
<div class="menu-price">
<span>${{item.price}}</span>
</div>
</div>
</a>
</div>
</div>