3

プロジェクトで Angular 5 を使用していますが、typescript エラーが発生します。

ERROR TypeError: Cannot read property 'indexOf' of undefined

私のコードがすべきことは、次のように入力の変更時にテンプレートを更新することです:

テンプレート:

<input #f (input)="filterResults(f.value)"/>

<div *ngIf="filteredCandidates.length">
    <ul class="filtered-candidates-list">
        <li *ngFor="let candidate of filteredCandidates">
            {{ candidate.name }}
        </li>
    </ul>
</div>

そして component.ts:

  private queryString: string;
  private candidates: Candidate[] = []
  private filteredCandidates: Candidate[] = [];

  filterResults(queryString) {
    this.candidatesService.filterCandidates().subscribe(candidates => this.candidates = candidates);
    if (!queryString) {
      return;
    }
    else {
      this.candidates.filter(c => { c.name.indexOf(queryString) >= 0 });
    }
  }

c.name でメソッド .contains() を使用してみましたが、同じ結果が得られました。予想どおり、typeofcandidate.nameはまだ文字列であり、入力も文字列です。ただし、typescriptが組み込まれているため、文字列メソッドを使用できないようです。

4

3 に答える 3

0

なんて愚かな間違いでしょう。エラー処理を行う必要がありました。データベースで、オブジェクトの 1 つにプロパティ名がありません (未定義)。そのため、ループがそこに到達すると、コードが壊れました。エラーをより適切に処理する必要があります。しかし、すべての提案に感謝します。

于 2018-03-01T20:49:02.877 に答える