Итерация массива интерфейса с использованием * ngFor в машинописи - PullRequest
2 голосов
/ 30 марта 2020

Итак, я реализовал интерфейс для извлечения данных из класса обслуживания.

export interface FilteredSubjects {
  key: string,
  list: Subject[]
}

Так что в настоящее время я хочу перебрать FilteredSubject интерфейсный массив. Поэтому я проверяю, используя console.log

вывод журнала консоли

Но я не могу повторить это, используя * ngFor. Это то, что я пробовал до сих пор. здесь selectedStreamList значения отображаются в интерфейсе Key атрибут

html

<mat-step [stepControl]="firstFormGroup" *ngFor="let stream of selectedStreamList; let indexOfelement = index;">
<div class="class=pl-5">
  <table class="table table-borderless ">
    <tbody>

    <ng-container *ngFor="let subject of getStreamFilter(indexOfelement)">
      <tr>
        <th scope="row">  <mat-checkbox  (change)="toggle(subject)"> {{subject.name}} </mat-checkbox></th>
        <td><a (click)="openDeleteSubjectDialog(subject.id)">
          <mat-icon class="aligned-with-icon" color="warn">delete</mat-icon>
        </a></td>
      </tr>

    </ng-container>
  .....

это Ts метод. Я получаю отфильтрованный список из родительского компонента.

 @Input("slist") filteredlist: FilteredSubjects[];



 constructor() {
  }

  ngOnInit() {}


getStreamFilter(index:number) : Subject[]{
    return this.filteredlist[index].list;
}

, но это не работает. как решить эту проблему?

это ошибка enter image description here

1 Ответ

0 голосов
/ 01 апреля 2020

После некоторых исследований я нашел способ решить эту проблему. это была проблема при вызове метода.

 getStreamFilterX(index:number) : Subject[]{

this.selectedStreamID = index;
let subList: Subject[] = [];
this.filteredlist.forEach((item: FilteredSubjects) => {
  if(item.key == index.toString()) {
    subList = item.list;
  }
});
return subList;
...