问题描述
counter: number = 0;
getDatatypes(){
if(this.counter == 0) {
if(this.appId != 0)
{
if(undefined != this.datatypes && this.datatypes.length)
for (let i = 0; i < this.datatypes.length; i++) {
this.applicationDataType = new ApplicationDataType(this.route.snapshot.params.id,this.datatypes[i].dataTypeId,this.datatypes[i].description,false);
let datatype = this.checkedDatatypes.find(y => y.description === this.datatypes[i].description);
if (datatype) {
this.applicationDataType.checked = true;
this.applicationDataTypes.push(this.applicationDataType);
} else {
this.applicationDataType.checked = false;
this.applicationDataTypes.push(this.applicationDataType);
}
}
} else {
for(let i = 0; i < this.datatypes.length; i++){
this.applicationDataType = new ApplicationDataType(this.route.snapshot.params.id,false);
this.applicationDataTypes.push(this.applicationDataType);
}
}
this.counter ++;
}
}
行
if(undefined != this.datatypes && this.datatypes.length)
是给TypeError: Cannot read property 'length' of undefined
的人。
这是我遇到的控制台错误
这些错误对用户不可见,并且不影响功能。我已经尝试了所有方法,但是前端多选择下拉列表中的数据类型一直消失。我尝试初始化数据类型:Datatype [] = [],用if(this.datatypes && this.datatypes.length)
包装for循环,并使用?。这些只是在运行前端时使多重选择下拉列表为空。
解决方法
似乎this.datatypes
不是数组或其null,您可以使用?
忽略此错误。
请将其更改为if(this.datatypes?.length>0)
您可以尝试以下操作吗?初始化dataTypes数组,然后使用forEach替换for循环
%