Angular 角度5字体错误:
我在一个项目中使用Angular 5,我得到一个typescript错误:Angular 角度5字体错误:,angular,typescript,typeerror,undefined-function,Angular,Typescript,Typeerror,Undefined Function,我在一个项目中使用Angular 5,我得到一个typescript错误: ERROR TypeError: Cannot read property 'indexOf' of undefined 我的代码应该做的是在输入更改时更新模板,如下所示: this.candidates.filter(c => { return c.name !== null && c.name.indexOf(queryString) >= 0 }); 模板:
ERROR TypeError: Cannot read property 'indexOf' of undefined
我的代码应该做的是在输入更改时更新模板,如下所示:
this.candidates.filter(c => {
return c.name !== null && c.name.indexOf(queryString) >= 0
});
模板:
<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>
我尝试在c.name上使用方法.contains(),得到了相同的结果。
与预期一样,typeof candidate.name仍然是字符串,输入也是字符串。
然而,仅仅因为合并了typescript,我就无法使用string方法。似乎您正在尝试对集合
候选对象执行筛选操作,即使尚未从API服务器检索到该集合。通过查看您的UI,看起来您并没有基于查询字符串进行任何远程筛选。在这种情况下,我建议在开始时检索候选者
集合,直到将输入
框设为禁用/只读。这样可以避免意外错误的发生
HTML
<input #f (input)="filterResults(f.value)" [readonly]="candidates.length"/>
<div *ngIf="filteredCandidates.length">
<ul class="filtered-candidates-list">
<li *ngFor="let candidate of filteredCandidates">
{{ candidate.name }}
</li>
</ul>
</div>
如果在某些情况下未定义c.name,则可以执行如下检查:
this.candidates.filter(c => {
return c.name !== null && c.name.indexOf(queryString) >= 0
});
这里!==null将检查null和未定义的值。多么愚蠢的错误。我不得不做一些错误处理。在数据库中,其中一个对象没有属性名(未定义)。因此,当循环到达那里时,代码中断了。我必须更好地处理错误。谢谢大家的建议。看起来name
未定义。在筛选器回调中设置断点,并确保已定义断点。谢谢,您的回答是正确的。数据库中的对象没有属性名称。谢谢您的建议。这似乎是数据库的问题,其中一个对象没有name属性。谢谢你的建议。
this.candidates.filter(c => {
return c.name !== null && c.name.indexOf(queryString) >= 0
});