Угловой запуск * ngFor для определенных индексов, определенных в массиве

#javascript #arrays #angular #ngfor #angular-ng-if

#javascript #массивы #angular #ngfor #angular-ng-if

Вопрос:

Я использую цикл *ngFor, но я хочу, чтобы цикл выполнялся только для определенных индексов, определенных в массиве (т.Е. indexArray = [454,640] ).

Если я попробую это, и indexArray содержит два или более элементов, это не сработает. Но если массив имеет только один элемент (т.Е. indexArray=[565]), он работает.

 <div *ngFor="let item of items; index as i">
  <table *ngIf="i == indexArray"> 
 

Комментарии:

1. Итак, вы хотите отображать только элементы с индексами 454 и 640 из items массива? Это ваша цель?

2. Используйте <table *ngIf=»indexArray.indexOf(i) >= 0″>; В вашем случае, вы пытались сравнить с == этим оператором, который преобразует операнд справа в число ( Number([565]) => 565 поэтому он равен 565)

Ответ №1:

Вы можете использовать .indexOf(i) и проверить, есть ли она в вашей indexArray переменной.

 <div *ngFor="let item of items; index as i">
  <table *ngIf="indexArray.indexOf(i)> -1"> 
  <!-- REST OF THE CODE -->
 

Ответ №2:

Вы можете сделать следующее:

 <div *ngFor="let item of items; index as i">
  <table *ngIf="indexArray.includes(i)">
    enter code here...
  </table>
</div>
 

Вот рабочий пример

Ответ №3:

создайте индексный массив следующим образом

 public indexArray: array = [454,640];
 

сделайте, как показано ниже.

 <div *ngFor="let item of items; index as i">
  <table *ngIf="indexArray.indexOf(i)> -1">
    enter code here...
  </table>
</div>
 

дайте мне знать, если у вас есть какие-либо сомнения.