为什么我在定义的数组上收到“ERROR TypeError:无法读取未定义的属性‘length’”?
2019-01-15
3431
我定义并初始化(两次)了我的数组,但在运行时我得到了“ERROR TypeError:无法读取未定义的属性‘length’”。
我已经尝试检查数组是否已定义,正如您在代码中看到的那样,但 angular 仍然在欺骗我。 我已经尝试了所有解决方案,例如将语法更改为“filesToUpload && filesToUpload?.length > 0”或任何可能的组合,但在我看来 Angular 无法正常工作。
component.html 文件
<ng-container *ngIf="undefined !== filesToUpload && filesToUpload.length > 0">
<button (click)='uploadImages()'
class="btn btn-success"
type="button">
<i class="fas fa-upload"></i>Upload
</button>
<button (click)='cancelUpdate()'
class="btn btn-danger"
type="button">Cancel</button>
</ng-container>
这是我的 component.ts 文件
export class ImageGalleryUploadComponent implements OnInit
{
filesToUpload: File[] = [];
ngOnInit() {
this.filesToUpload = []
}
}
这是 angular 错误吗?还是与组件生命周期有关?
3个回答
尝试一下,在某处你将
undefined
分配给你的 Array 对象。
<ng-container *ngIf="filesToUpload && filesToUpload != 'undefined' && filesToUpload.length > 0">
虽然这不是一个好的做法,但只需尝试一次,如果确认无误,则在你的代码中交叉检查。
Ganesh
2019-01-15
尝试使用安全导航运算符,它将一次性处理文件为空和长度,
<ng-container *ngIf="filesToUpload && filesToUpload?.length > 0">
Sajeetharan
2019-01-15
只需执行一次:
export class ImageGalleryUploadComponent implements OnInit
{
filesToUpload: File[] = [];
}
我也遇到过这个问题。从
ngOnInit
中删除重新初始化应该可以解决问题。不用担心,每次初始化组件时它都会被设置为
[]
。
Gourishankar
2019-01-15