J'essaie d'ajouter toutes les 3 lignes dans ngFor
Voici comment je le fais
<div class="col-sm-4 food-menu-col"></div> <div class="clearfix"></div> <div class="col-sm-4 food-menu-col"></div> <div class="col-sm-4 food-menu-col"></div> <div class="col-sm-4 food-menu-col"></div> <div class="clearfix"></div> <div class="col-sm-4 food-menu-col"></div> <div class="col-sm-4 food-menu-col"></div> <div class="col-sm-4 food-menu-col"></div> <div class="clearfix"></div> <div class="col-sm-4 food-menu-col"></div> <div class="col-sm-4 food-menu-col"></div> <div class="col-sm-4 food-menu-col"></div>
Cela l'ajoute toutes les 3 lignes, mais il ajoute également après la première ligne, le code génère le code HTML suivant.
<ng-container *ngFor="let foodMenu of item['food_menus']; index as i;">
<div class="col-sm-4 food-menu-col"></div>
<div *ngIf="i % 3 == 0" class="clearfix"></div>
</ng-container>
4 Réponses :
changer div clearfix en
<div *ngIf="i % 3 == 2" class="clearfix"></div>
Cela marche. Je me demande pourquoi ma condition n'a pas fonctionné et cela a fonctionné.
index i commence à 0,1,2,3,4,5, ... donc la valeur de i% 3 est respectivement "0,1,2,0 , 1,2, ... "donc i% 3 == 2 est vrai pour i = 2, 5, .... Dans votre condition i% 3 == 0 le vrai était pour i = 0,3,6, ... (donc pour la ligne de départ i = 0 aussi)
Selon vos besoins. Vous voulez ajouter le div à la troisième ligne.
Remplacez simplement l'index par i; par let i = index + 1; .
<ng-container *ngFor="let foodMenu of item['food_menus']; let i = index + 1;"> <div class="col-sm-4 food-menu-col"></div> <div *ngIf="i % 3 == 0" class="clearfix"></div>
L'index commence par 0, c'est pourquoi il n'est pas tous les tiers. Essayez ceci:
<ng-container *ngFor="let foodMenu of [1,2,3,4,5,6,7]; index as i;">
<div class="col-sm-4 food-menu-col">{{foodMenu}}</div>
<div *ngIf="(i + 1 )% 3 == 0" class="clearfix">I am added only every third one</div>
</ng-container>
démo p >
En fait, c'est similaire à ma réponse supprimée. Je viens de réaliser que OP ne déclare pas systématiquement après le 3ème élément. "Cela l'ajoute toutes les 3 lignes" puis dans le paragraphe suivant "Je veux que le div clearfix soit ajouté toutes les 3 lignes." :(
Cela ajoute clearfix div toutes les 2 lignes au lieu de toutes les 3.
Vous voulez dire que ça devrait être tous les trois?
Prenez 'i' comme variable dans la boucle for, il commencera la valeur de 'i' à partir de 1.
<ng-container *ngFor="let element of item; let i;"> <div class="col-sm-4 food-menu-col"></div> <div *ngIf="i % 3 == 0" class="clearfix"></div> </ng-container>