У меня есть массив объектов, но я хочу отображать только первые два, пока они не будут удалены и появится следующая строка - PullRequest
0 голосов
/ 18 июня 2019
for (let index = 0; index < this.currentCompetitors.length; index++) {
   if(index < 2) {
console.log(this.currentCompetitors[index]);
     this.currentCompetitors = response;
 }
}

Я думаю, что в конечном итоге это не сработает, но я решил опубликовать то, что у меня есть.Мне нужно, чтобы он проходил по всему массиву, но отображал только два.

Я хочу, чтобы моя функция проходила по циклу, скажем, 5 объектов, но отображал только первые два, пока первый возражающий не будет удалени второй и третий объект занимает свое место.Может быть, я могу сделать это с помощью ngClass?

Если кто-то может указать мне правильное направление, это было бы здорово.

Ответы [ 2 ]

1 голос
/ 18 июня 2019

Вы можете создать вспомогательную функцию для отображения первых двух элементов:

const firstTwo = (arr: any[]) => arr.filter((item, index) => index < 2);

Использование:

const myArray = [1,2,3,4,5];
display(firstTwo(myArray));  //where display is your method for displaying

Если вы пытаетесь отобразить содержимое в угловом компоненте, выможет сделать что-то вроде этого:

<div *ngFor="let item of firstTwo(myArray)">
  {{item}}
  <button (click)="delete(item)">&times</button>
</div>

, где метод delete() определен в элементе управления и удаляет элемент из массива.

delete(item) {
  //assumes item has a key property id
  const index = this.myArray.findIndex(el => el.id === item.id);
  if (index >= 0) { 
    this.myArray.splice(index, 0); //remove the item
  }
}
0 голосов
/ 18 июня 2019

Если вы хотите всегда первые два элемента, вы можете сделать это просто

let foo = [this.currentCompetitors[0], this.currentCompetitors[1]];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...