Стеки div angular2

Я пытаюсь переделать этот пост: angularjs Как создать стек div с помощью ng-repeat

который представляет собой код angular1 в версию angular2 / 3. Однако я застрял только в одной части, где:

ng-class = "{'card-hide': index  > $index + 1}"

не работает. Я делаю это как: [ngClass] = "{'card-hide': index > $index + 1}", но этот $index недействителен. Здесь есть плункер:

http://plnkr.co/edit/tLVJrpqavKbHvKzMljNG?p=preview

И я вижу в app.js, что они используют $ scope.index = 1;

Я пробовал [ngClass] = "{'card-hide': index > index + 1}", но тоже не работал. Мне нужно добавить этот класс card-hide в самый последний элемент из списка ngFor каждый раз, когда я нажимаю кнопку или вызываю функцию для удаления элемента. Таким образом, этот класс должен быть добавлен только в последний элемент списка и удален, если вы вернетесь. В плунжере все объяснено, только что написано на Angular1.

Это то, что я делаю, и все в порядке. Просто часть добавления этого класса к последнему элементу в списке не работает. У них есть две кнопки, prev и next, например: <button type = "button" class = "btn btn-next" (click) = "idx = idx <list.length? Idx + 1: list.length"> Next < / button> <button type = "button" class = "btn btn-pre" (click) = "idx = idx> 1? idx - 1: 1"> Предыдущий </button>

inoxious 08.09.2018 01:36

Существует также свойство last, которое вы можете использовать: *ngFor = "let item of items; let last = last", чтобы затем вы могли выполнить ng-class = "{'card-hide': last}"

user184994 08.09.2018 01:38

Ясно спасибо. Но в этой логике это не сработает, так как каждый раз, когда индекс изменяется, он должен добавляться к последнему элементу в списке. Снова посмотрите на их плункер: plnkr.co/edit/tLVJrpqavKbHvKzMljNG?p=preview

inoxious 08.09.2018 01:41

Извините, я не внимательно посмотрел на plunkr. Теперь я понимаю проблему, взгляните на ответ ниже. Я добавил Stackblitz, чтобы вы могли увидеть его в действии

user184994 08.09.2018 01:56
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Angular и React для вашего проекта веб-разработки?
Angular и React для вашего проекта веб-разработки?
Когда дело доходит до веб-разработки, выбор правильного front-end фреймворка имеет решающее значение. Angular и React - два самых популярных...
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Мы провели Twitter Space, обсудив несколько проблем, связанных с последними дополнениями в Angular. Также прошла Angular Tiny Conf с 25 докладами.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
Мое недавнее углубление в Angular
Мое недавнее углубление в Angular
Недавно я провел некоторое время, изучая фреймворк Angular, и я хотел поделиться своим опытом со всеми вами. Как человек, который любит глубоко...
Освоение Observables и Subjects в Rxjs:
Освоение Observables и Subjects в Rxjs:
Давайте начнем с основ и постепенно перейдем к более продвинутым концепциям в RxJS в Angular
0
4
29
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

В этом примере $index относится к индексу отдельной карты. Мы можем сделать это, используя следующее:

*ngFor = "let card of cards; let $index = index" 

Вот пример Stackblitz

У меня есть еще одна вещь, которую я хочу реализовать, и она блокирует меня. Я хочу в основном ограничить штабелирование, чтобы отображалось 3-4 элемента в стеке. Все новые элементы будут добавлены в список, но они не изменят верхнюю позицию. Я поместил это: [ngStyle] = "{top: cards.length <4? This.spaceOne * $ index + 'px': this.spaceTwo, 'z-index': (cards.length - $ index)}" >, где у меня есть spaceOne = 2 и SpaceTwo = 0 в файле TS, но сразу после того, как длина списка изменится на 4, он применяет это правило ко всем элементам, поэтому все они меняют позицию top = 0

inoxious 08.09.2018 11:10

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