如何将 ionic 4 html 文件中的 i=index 值传递到 .ts 文件中以便在方法中使用?

How do I pass i=index value from an ionic 4 html file into the .ts file for use in a method?

我有一个 *ngFor,它使用 let i=index 并按预期工作索引数组。

html

  <div *ngFor="let fromItem of listResults let i=index;">
    <ion-item  (click)="openSubsetPage( i )" detail>
      <ion-label>{{fromItem.Name}}</ion-label>
      <ion-badge color="light">{{filter}} / {{listNumber[i].Questions.length}}</ion-badge>
    </ion-item>
  </div>

我想要完成的是使用我的 html 文件中的 [i],在我的 .ts 文件中的第 5 行 this.filter。我想用 [i] 替换 [0]。我不确定我该怎么做。

.ts

GetList(){
  this.storage.get(this.value).then((val) => {
    this.listResults = JSON.parse(val);
    this.listNumber = this.listResults;
    this.filter = this.listNumber[0].Questions.filter((c: { input: any; }) => !!c.input).length;
  });
}

如果要在加载视图之前计算过滤器值,则必须创建另一个数组 filter[] 并存储计算出的值。

let filter[];

GetList() {
  this.storage.get(this.value).then((val) => {
    this.listResults = JSON.parse(val);
    this.listNumber = this.listResults;

    this.listNumber.forEach((item, index) => {
      this.filter[index] = this.listNumber[index].Questions
        .filter((c: { input: any }) => !!c.input).length;
      });
    });
  }
}

并在模板中用作

<ion-badge color="light"> {{ filter[i] }} / {{listNumber[i].Questions.length}}</ion-badge>

另一种方法是创建一个方法来计算给定索引处列表项的此过滤器值。

getFilter(index) {
  return this.listNumber[index].Questions.filter((c: { input: any }) => !!c.input).length;
}

并在模板中使用它作为

<ion-badge color="light"> {{ getFilter(i) }} / {{listNumber[i].Questions.length}}</ion-badge>