Как разместить указанное количество объектов в строке?

У меня есть угловой проект, в котором мне нужно размещать элементы в формате сетки. Мне нужно два элемента в строке в карточном формате. Например, где мой массив:

myfruit:fruit[] = [new fruit(1,"apple","red fruit"),
                   new fruit(2,"banana","yellow fruit"),
                   new fruit(3,"orange","orange fruit")]
}

class fruit{
  public id:number;
  public name:string;
  public description:string;

  constructor(id:number,name:string,description:string){
    this.id=id;
    this.name = name;
    this.description = description;
  }

Соответствующий HTML:

<div *ngFor = "fruit in myfruit">
  <div *ngFor = "let i = 0; i < 2;i++">
    <h1>{{fruit.name}}</h1>
    <p>{{fruit.description}}</p>
  </div>
</div>

Это правильный способ выложить мои предметы в ряды по два?

Вам было бы лучше просто сделать это с помощью CSS вместо того, чтобы пытаться создать новый элемент-оболочку каждые X элементов.

abney317 30.05.2019 21:54

Если вы хотите сделать это с помощью javascript, вы можете разделить свою коллекцию на 2 и зациклить ее на внешнем слое. Функция фрагмента

Mateus Schneiders 30.05.2019 21:56
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
2
35
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если вы хотите сделать это с помощью javascript, вы можете разделить свою коллекцию на 2 и зациклить ее на внешнем слое.

<div *ngFor = "let fruitChunk of chunkArray(myfruit, 2)">
  <div *ngFor = "let fruit of fruitChunk">
    <h1>{{fruit.name}}</h1>
    <p>{{fruit.description}}</p>
  </div>
</div>

Функция чанка:

function chunkArray(myArray, chunk_size){
    var index = 0;
    var arrayLength = myArray.length;
    var tempArray = [];

    for (index = 0; index < arrayLength; index += chunk_size) {
        var myChunk = myArray.slice(index, index+chunk_size);
        // Do something if you want with the group
        tempArray.push(myChunk);
    }

    return tempArray;
}

Источник: Связь

Обратите внимание, что вы должны использовать of вместо in в цикле ngFor (это цикл for ... of).

ConnorsFan 30.05.2019 22:03

Другие вопросы по теме