当我在subscribe方法中定义一个对象时,当我尝试为其赋值时,该对象似乎是未定义的。 “_ file”和“this.fileObjects”似乎都是未定义的。 谁能给我一个如何解决这个问题的提示?
import { Component, OnInit} from '@angular/core';
import {DataTransferService} from '../data-transfer.service';
import {DataModelService} from '../data-model.service';
import {Location} from '@angular/common';
@Component({
selector: 'app-open-selector',
templateUrl: './open-selector.component.html',
styleUrls: ['./open-selector.component.css']
})
export class OpenSelectorComponent implements OnInit {
fileObjects:File[];
constructor(private fData:DataTransferService, public location:Location) { }
ngOnInit() {
this.getFileList();
}
private getFileList() {
this.fileObjects = [];
this.fData.getFileList().subscribe((files) => {
let _file:File;
for(let i=0; i<files.length; i++) {
let tmpArray:string[];
tmpArray = files[i].split('|');
_file.fileName = files[i];
_file.owner = tmpArray[0];
_file.brand = tmpArray[1];
_file.serial = tmpArray[2];
_file.flags = tmpArray[3];
this.fileObjects.push(_file);
}
});
}
}
interface File {
fileName:string,
owner:string,
brand:string,
serial:string,
flags:string
}
在控制台中显示以下错误消息: TypeError:undefined不是对象(评估'_file.fileName = files [i]')
答案 0 :(得分:0)
由于_file未定义let _file:File;
。当您进行_file.fileName = files[i];
之类的作业时,它会抛出一个
&#34;找不到未定义的文件名&#34;
错误。
初始化变量let _file:File = {};
答案 1 :(得分:0)
在Javascript中,您必须声明然后定义变量。
x * x
//这声明了变量。但默认值为chHE.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long l) {
if(position==0){
toast.show();
}
}
});
此外,在作为js函数一部分的let _file;
对象中,没有名为undefined
的值。因此,它也是未定义的。
解决方案是在尝试使用它们之前定义值。
this