Angular 5项目AOT编译报错:Property 'indx'不存在于EntryComponent类型
解决Angular 5 AOT编译报错:Property 'indx' does not exist on type 'EntryComponent'
这个报错的根源很明确——你在*ngFor里的trackBy用法出错了!
Angular的trackBy指令要求绑定的是组件类中定义的函数,而不是模板里的局部变量indx。AOT编译对类型检查非常严格,它会尝试在你的EntryComponent类中查找名为indx的属性,但这个变量只是*ngFor循环里的临时局部变量,组件类里根本没有定义,所以就抛出了这个错误(JIT编译因为是运行时处理,可能不会触发这个报错,但AOT会提前做严格校验)。
修复步骤:
在你的
EntryComponent类中添加一个trackBy函数
这个函数需要接收两个参数:循环的索引和当前项,返回你用来跟踪的唯一标识(这里我们用索引即可):trackByIndex(index: number, item: any): number { return index; }修改模板中的
*ngFor绑定
把原来的trackBy: indx改成绑定到刚才定义的函数:<div *ngFor="let form of getEntryGroupItemsControl(); let indx = index; trackBy: trackByIndex">
这样修改后,AOT编译就能找到对应的trackBy函数,不会再报找不到indx属性的错误了。
内容的提问来源于stack exchange,提问作者jawahar
相关产品推荐
相关产品推荐

