Szukaj…


Wprowadzenie

* NgIf : Usuwa lub odtwarza część drzewa DOM w zależności od oceny wyrażenia. Jest to dyrektywa strukturalna, a dyrektywy strukturalne zmieniają układ DOM poprzez dodawanie, zastępowanie i usuwanie jego elementów.

Składnia

  • <div * ngIf = "false"> test </div> <! - zwraca wartość false ->
  • <div * ngIf = "undefined"> test </div> <! - zwraca wartość false ->
  • <div * ngIf = "null"> test </div> <! - zwraca wartość false ->
  • <div * ngIf = "0"> test </div> <! - zwraca wartość false ->
  • <div * ngIf = "NaN"> test </div> <! - zwraca wartość false ->
  • <div * ngIf = ""> test </div> <! - zwraca wartość false ->
  • Wszystkie pozostałe wartości są prawdziwe.

Wyświetl komunikat ładowania

Jeśli nasz komponent nie jest gotowy i czeka na dane z serwera, możemy dodać moduł ładujący za pomocą * ngIf. Kroki:

Najpierw zadeklaruj wartość logiczną:

loading: boolean = false;

Następnie w swoim komponencie dodaj hak cyklu życia o nazwie ngOnInit

ngOnInit() {
   this.loading = true;
}

a po uzyskaniu kompletnych danych z serwera ładujesz wartość logiczną na false.

 this.loading=false; 

W kodzie HTML szablonu użytku * ngIf z loading nieruchomości:

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

Pokaż komunikat ostrzegawczy pod warunkiem

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

Aby uruchomić funkcję na początku lub na końcu pętli * ngFor za pomocą * ngIf

NgFor zapewnia pewne wartości, które można aliasować do zmiennych lokalnych

  • indeks - (zmienna) pozycja bieżącego elementu w iteracji od 0
  • first - (boolean) true, jeśli bieżący element jest pierwszym elementem iterowalnym
  • last - (boolean) true, jeśli bieżący element jest ostatnim elementem iterowalnym
  • even - (boolean) true, jeśli bieżący indeks jest liczbą parzystą
  • nieparzysty - (boolean) true, jeśli bieżący indeks jest liczbą nieparzystą
<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>

Użyj * ngIf z * ngFor

Chociaż nie możesz używać *ngIf i *ngFor w tym samym div (da to błąd w czasie wykonywania), możesz zagnieździć *ngIf w *ngFor aby uzyskać pożądane zachowanie.

Przykład 1: Ogólna składnia

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

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

  </div>
</div>

Przykład 2: Wyświetl elementy o parzystym indeksie

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

Minusem jest to, że należy dodać dodatkowy zewnętrzny element div .

Ale rozważ ten przypadek użycia, w którym element div musi być iterowany (przy użyciu * ngFor), a także obejmuje sprawdzenie, czy element należy usunąć, czy nie (przy użyciu * ngIf), ale dodanie dodatkowego elementu div nie jest zalecane. W takim przypadku możesz użyć znacznika template dla * ngFor:

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

W ten sposób dodanie dodatkowego div nie jest potrzebne, a ponadto element <template> nie zostanie dodany do DOM. Jedynymi elementami dodanymi do DOM z powyższego przykładu są iterowane elementy div .

Uwaga: W Angular v4 <template> został wycofany na korzyść <ng-template> i zostanie usunięty w v5. W wydaniach Angular v2.x <template> jest nadal aktualny.



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow