Последний массив состояний с индексом в Typescript Angular - PullRequest
0 голосов
/ 20 марта 2019

Я застрял с этой логикой.У меня есть массив и функции:

import { Component } from '@angular/core';

@Component({
  selector: 'my-app',
  templateUrl: './app.component.html',
  styleUrls: [ './app.component.css' ]
})
export class AppComponent  {
  name: any = 'World';

  myArray: any = 
  [
    {
      id: 2001,
      name:"a"
    }, 
    {
      id: 2002,
      name:""
    }, 
    {
      id: 2003,
      name:"b"
    }, 
    {
      id: 2004,
      name:"c"
    }, 
  ];
 
  ngOnInit() {
   this.removeEmptyContent();
  }

  selectFile(event) {
    console.log('event', event);
     
    this.myArray.forEach( (myObject) => {
        console.log('myObject', myObject); 
            if(myObject.length > -1){
                console.log('completed'); 
            } else {
                console.log('in progress'); 
        }
    });   
    console.log('getlast', this.myArray.length > -1);
  }

  removeEmptyContent() {
    this.myArray.forEach( (myObject, index) => {
      if(!myObject.name){
          this.myArray.splice(index, 1);
      }
    });   
  }
}
<hello name="{{ name }}"></hello>
<ul>
  <li *ngFor="let item of myArray">
    <div (click)=selectFile(item)>
      {{item.name}}
    </div>
  </li>
</ul>

Я хочу, чтобы этот массив имел другое значение при выборе последнего элемента.Когда выберите индекс 0,1, .. статус в " прогресс ", но когда выберите последний индекс, я хочу статус " complete ".Как это сделать?

Примечание. Этот код необходимо исправить и обновить

Спасибо

1 Ответ

0 голосов
/ 20 марта 2019

Вы можете сделать что-то вроде этого. Это не самый чистый, но я думаю, что это будет работать. Сначала у вас есть массив вашего selectedItem:

Вы проверяете, был ли выбранный пункт уже выбран

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

Вот код:

ngOnInit() {
   this.removeEmptyContent();
   this.selectedItem = []
  }

  selectFile(event) {
    console.log('event', event);

    if(this.selectedItem.find(item => item.id = event.id)){
        this.selectedItem.push(event)
    }
    if(this.selectedItem.length === this.myArray.length){
        console.log('completed'); 
    } else {
        console.log('in progress');
    }
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...