Recherche…


Introduction

* NgIf : Supprime ou recrée une partie de l'arborescence DOM en fonction d'une évaluation d'expression. C'est une directive structurelle et les directives structurelles modifient la disposition du DOM en ajoutant, en remplaçant et en supprimant ses éléments.

Syntaxe

  • <div * ngIf = "false"> test </ div> <! - évalue à false ->
  • <div * ngIf = "undefined"> test </ div> <! - évalue à false ->
  • <div * ngIf = "null"> test </ div> <! - évalue à false ->
  • <div * ngIf = "0"> test </ div> <! - évalue à false ->
  • <div * ngIf = "NaN"> test </ div> <! - évalue à false ->
  • <div * ngIf = ""> test </ div> <! - évalue à false ->
  • Toutes les autres valeurs ont la valeur true.

Afficher un message de chargement

Si notre composant n'est pas prêt et attend des données du serveur, alors nous pouvons ajouter le chargeur en utilisant * ngIf. Pas:

Commencez par déclarer un booléen:

loading: boolean = false;

Ensuite, dans votre composant, ajoutez un crochet de cycle de vie appelé ngOnInit

ngOnInit() {
   this.loading = true;
}

et après avoir obtenu des données complètes du serveur, définissez la valeur booléenne sur false.

 this.loading=false; 

Dans votre modèle HTML, utilisez * ngIf avec la propriété de loading :

<div *ngIf="loading" class="progress">
   <div class="progress-bar info" style="width: 125%;"></div>
</div>

Afficher le message d'alerte à condition

<p class="alert alert-success" *ngIf="names.length > 2">Currently there are more than 2 names!</p>

Pour exécuter une fonction au début ou à la fin de * ngFor loop using * ngIf

NgFor fournit des valeurs pouvant être associées à des variables locales

  • index - (variable) position de l'élément courant dans l'itérable à partir de 0
  • first - (booléen) true si l'élément en cours est le premier élément de l'itérable
  • last - (boolean) true si l'élément en cours est le dernier élément de l'itérable
  • even - (booléen) true si l'index actuel est un nombre pair
  • odd - (boolean) true si l'index actuel est un nombre impair
<div *ngFor="let note of csvdata; let i=index; let lastcall=last">
      <h3>{{i}}</h3> <-- to show index position
      <h3>{{note}}</h3>
      <span *ngIf="lastcall">{{anyfunction()}} </span><-- this lastcall boolean value will be true only if this is last in loop
      // anyfunction() will run at the end of loop same way we can do at start
    </div>

Utilisez * ngIf avec * ngFor

Bien que vous ne soyez pas autorisé à utiliser *ngIf et *ngFor dans le même div (cela donnera une erreur dans le runtime), vous pouvez imbriquer le *ngIf dans le *ngFor pour obtenir le comportement souhaité.

Exemple 1: syntaxe générale

<div *ngFor="let item of items; let i = index">
  <div *ngIf="<your condition here>">

   <!-- Execute code here if statement true -->

  </div>
</div>

Exemple 2: éléments d'affichage avec index pair

<div *ngFor="let item of items; let i = index">
  <div *ngIf="i % 2 == 0">
    {{ item }}
  </div>
</div>

L'inconvénient est qu'un élément div supplémentaire doit être ajouté.

Mais considérez ce cas d'utilisation où un élément div doit être itéré (en utilisant * ngFor) et inclut également une vérification pour savoir si l'élément doit être supprimé ou non (en utilisant * ngIf), mais ajouter un div supplémentaire n'est pas préféré. Dans ce cas, vous pouvez utiliser la balise template pour * ngFor:

<template ngFor let-item [ngForOf]="items">
    <div *ngIf="item.price > 100">
    </div>
</template>

De cette façon, l'ajout d'un div externe supplémentaire n'est pas nécessaire et l'élément <template> ne sera pas ajouté au DOM. Les seuls éléments ajoutés dans le DOM à partir de l'exemple ci-dessus sont les éléments div itérés.

Remarque: Dans Angular v4, <template> est devenu obsolète en faveur de <ng-template> et sera supprimé dans la version 5. Dans Angular v2.x, les versions <template> sont toujours valides.



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow