Angular ngfor устанавливает пустую сетку, если условие соответствует

Я зацикливаю массив, длина которого может измениться в строке из трех столбцов (в представлении на рабочем столе.

HTML

<div  class = "row" >
  <div *ngFor = "let indicator of fiveElements; let index = index"
    class = "col-12 col-sm-6 col-md-6 col-lg-4 col-xl-4 pb-4 pl-3 pr-3 indicatorContainer">
    <div>{{index}}</div>
  </div>
</div>

тс

export class AppComponent  {
fiveElements = [1,2,3,4,5]

}

Я бы хотел, чтобы при длине массива, равной 4, третий столбец был пуст.

Вот схема для пояснения

Angular ngfor устанавливает пустую сетку, если условие соответствует

Вот демо

Используйте *ngIf, чтобы проверить длину вашего массива и сделать то, что вы хотите

Abdulrahman Falyoun 27.05.2019 18:17

Я обновил демо, надеюсь стало понятнее

Hamza Haddad 28.05.2019 10:11
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
0
2
557
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Если я правильно понял ваш вопрос - я бы сделал это так:

<div class = "row">
    <div *ngFor = "let indicator of fourElements; let index = index" class = "col-12 col-sm-6 col-md-6 col-lg-4 col-xl-4 pb-4 pl-3 pr-3 indicatorContainer">
        <div *ngIf = "index !== 3 && fourElements.length === 4">{{index}}</div>
        <!--- third column should get empty -->
    </div>
</div>

Спасибо за разъяснения - теперь я знаю, что вы хотите :) Вы можете добиться этого, используя длинный синтаксис для ngFor:

<div class = "row">
        <ng-template ngFor let-indicator [ngForOf] = "fourElements" let-index = "index">
            <div *ngIf = "index === 2 && fourElements.length === 4" class = "col-12 col-sm-6 col-md-6 col-lg-4 col-xl-4 pb-4 pl-3 pr-3 indicatorContainer">
            </div>
            <div class = "col-12 col-sm-6 col-md-6 col-lg-4 col-xl-4 pb-4 pl-3 pr-3 indicatorContainer">
                <div>{{index+1}}</div>
            </div>
        </ng-template>
    </div>

Это скроет третий элемент. Я хотел бы нажать только два элемента в первой строке + пустой столбец и два элемента в следующей строке.

Hamza Haddad 28.05.2019 10:01

Спасибо, я пытаюсь понять разницу между неделями * ngfor и ngForOf, если я использую ваше решение с * ngfor, которое не работает, почему?

Hamza Haddad 28.05.2019 11:29

*ngFor - это просто сокращенный синтаксис для более чистого кода - в конце концов, он делает то же самое. Проблема с *ngFor в вашей ситуации заключается в том, что вы определяете цикл for для элемента div. Но вы хотите добавить div на том же уровне между одним циклом - это может работать только тогда, когда родитель div проходит через цикл. С помощью длинного синтаксиса вы определяете его в родительском шаблоне ng, поэтому у вас больше контроля над ним и вы можете разместить другой div с условием if. Надеюсь, вы понимаете разницу. Документы: angular.io/api/common/NgForOf#описание

Geggi632 28.05.2019 14:37

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