没有初始化程序声明的对象是未定义的

时间:2017-07-14 10:43:30

标签: javascript angular http submit

当我在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]')

2 个答案:

答案 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