我定义了数组,并对其进行了初始化(TWICE),但是在运行时出现“ ERROR TypeError:无法读取未定义的属性'length'的信息”。
我已经尝试检查数组是否已定义(如您在我的代码中看到的那样),但是angular仍然在诱骗我。 我已经尝试了所有解决方案,例如将sintax更改为“ filesToUpload && filesToUpload?.length> 0”或任何可能的组合,但是Angular在imo上无法正常工作。
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 = []
}
}
这是一个有角度的错误吗?还是与组件生命周期有关?
答案 0 :(得分:1)
尝试此操作,在将undefined
分配给Array对象的地方。
<ng-container *ngIf="filesToUpload && filesToUpload != 'undefined' && filesToUpload.length > 0">
尽管这不是一个好习惯,但只需尝试一次,如果确认,则交叉检查代码。
答案 1 :(得分:0)
使用安全的导航运算符尝试这种方式,它将一次性处理null和lentgh文件,
<ng-container *ngIf="filesToUpload && filesToUpload?.length > 0">
答案 2 :(得分:0)
只需执行一次,就像:
export class ImageGalleryUploadComponent implements OnInit
{
filesToUpload: File[] = [];
}
我也遇到了这个问题。从ngOnInit
中删除重新初始化应该可以解决此问题。并且不必担心每次组件初始化时都会将其设置为[]
。