【发布时间】:2018-08-10 00:17:18
【问题描述】:
我在一个项目中使用 Angular 5,但遇到打字错误:
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() 方法,得到了相同的结果。 正如预期的那样,candidate.name 的类型仍然是字符串,输入也是字符串。 但是,就好像我不能使用字符串方法只是因为打字稿被合并了。
【问题讨论】:
-
看起来
name未定义。在过滤器回调中设置断点并确保已定义。
标签: angular typescript typeerror undefined-function