Le scénario suivant serait assez facile en javascript mais j'ai eu quelques problèmes pour le faire fonctionner en angulaire.
J'ai un tableau comme:
array a = ( "id" = 0, name = random(), column = 1, 2 or 3, blockrow= 1, 2 or 3)
Avec ngFor, j’essaie de créer maintenant une grille où tous les éléments d’un élément sont séparés en colonnes et en blocs dans cette colonne. Donc, mon code actuel (fonctionne mais méchant).
<div *ngFor="let a of a">
<template [ngIf]="a.column=='1'">
<div *ngFor="let b of a">
<template [ngIf]="b.blockrow=='1'">
Block 1 in column 1{{b.name}}
</template>
</div>
<div *ngFor="let b of a">
<template [ngIf]="b.blockrow=='2'">
Block 2 in column 1{{b.name}}
</template>
</div>
<div *ngFor="let b of a">
<template [ngIf]="b.blockrow=='3'">
Block 3 in column 1{{b.name}}
</template>
</div>
</template>
</div>
Quelque chose comme ça, je cours pour chaque colonne. Ce qui signifie que je boucle dans le même tableau à 12 reprises. Y a-t-il un moyen de le faire plus beau?
Dans votre composant, utilisez JavaScript pour créer un tableau de tableaux contenant les éléments de a aux bonnes coordonnées, puis utilisez * ngFor dans * ngFor:
<div *ngFor="let row of rows">
<div *ngFor="let col of row">
Block {{col.blockrow}} in column {{col.column}} {{col.name}}
</div>
</div>
Un troisième * ngFor peut être nécessaire si plusieurs blocs ont les mêmes coordonnées.
Vous utilisez une syntaxe incorrecte devrait être *ngIf
au lieu de [ngIf]
<div *ngFor="let a of a">
<template *ngIf="a.column=='1'">
<div *ngFor="let b of a">
<template *ngIf="b.blockrow=='1'">
Block 1 in column 1{{b.name}}
</template>
</div>
<div *ngFor="let b of a">
<template *ngIf="b.blockrow=='2'">
Block 2 in column 1{{b.name}}
</template>
</div>
<div *ngFor="let b of a">
<template *ngIf="b.blockrow=='3'">
Block 3 in column 1{{b.name}}
</template>
</div>
</template>
</div>