Поиск…


Вступление

* NgIf : он удаляет или воссоздает часть дерева DOM в зависимости от оценки выражения. Структурная директива и структурные директивы изменяют компоновку DOM путем добавления, замены и удаления его элементов.

Синтаксис

  • <div * ngIf = "false"> test </ div> <! - вычисляет false ->
  • <div * ngIf = "undefined"> test </ div> <! - вычисляет значение false ->
  • <div * ngIf = "null"> test </ div> <! - вычисляет false ->
  • <div * ngIf = "0"> test </ div> <! - вычисляет false ->
  • <div * ngIf = "NaN"> test </ div> <! - вычисляет false ->
  • <div * ngIf = ""> test </ div> <! - вычисляет значение false ->
  • Все остальные значения оцениваются как истинные.

Отображение загрузочного сообщения

Если наш компонент не готов и ждет данных с сервера, мы можем добавить загрузчик, используя * ngIf. шаги:

Сначала объявите логическое значение:

loading: boolean = false;

Затем в вашем компоненте добавьте крюк жизненного цикла, называемый ngOnInit

ngOnInit() {
   this.loading = true;
}

и после того, как вы получите полные данные с сервера, вы загружаете boolean в false.

 this.loading=false; 

В вашем шаблоне html используйте * ngIf с свойством loading :

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

Показать сообщение оповещения о состоянии

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

Запуск функции в начале или конце цикла * ngFor Использование * ngIf

NgFor предоставляет некоторые значения, которые могут быть сглажены локальным переменным

  • index - (переменная) позиция текущего элемента в истребителе, начинающемся с 0
  • first - (boolean) true, если текущий элемент является первым элементом в iterable
  • last - (boolean) true, если текущий элемент является последним элементом в iterable
  • even - (boolean) true, если текущий индекс является четным числом
  • нечетное - (логическое) значение true, если текущий индекс является нечетным числом
<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>

Используйте * ngIf с * ngFor

Хотя вам не разрешено использовать *ngIf и *ngFor в одном и том же div (это даст ошибку во время выполнения), вы можете *ngIf в *ngFor чтобы получить желаемое поведение.

Пример 1: Общий синтаксис

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

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

  </div>
</div>

Пример 2. Отображение элементов с четным индексом

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

Недостатком является то, что необходимо добавить дополнительный внешний элемент div .

Но рассмотрите этот случай использования, когда необходимо, чтобы элемент div был итерирован (с использованием * ngFor), а также проверяет, нужно ли удалить элемент или нет (используя * ngIf), но добавление дополнительного div не является предпочтительным. В этом случае вы можете использовать тег template для * ngFor:

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

Таким образом, добавление дополнительного внешнего div не требуется, и, кроме того, элемент <template> не будет добавлен в DOM. Единственными элементами, добавленными в DOM из приведенного выше примера, являются итерированные элементы div .

Примечание. В Angular v4 <template> устарел в пользу <ng-template> и будет удален в версии 5. В версиях Angular v2.x сохраняется <template> .



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow