尝试为属性赋值时出现“未定义”错误

时间:2016-09-09 22:04:39

标签: angular typescript

尝试将值分配给自定义类的属性时,我收到undefined错误。

我定义了一个FileArgument类:

export class FileArgument {
  name: string;
  path: string;
  file: File;
}

我想在我的组件中使用它来存储有关file类型输入字段的信息。我的组件如下所示:

export class InputModuleComponent {
    private fileArgument: FileArgument;

    onChange(event): void {
        console.log('input-module.component - onChange()');

        this.fileArgument.file = event.originalTarget.files[0];
        this.fileArgument.name = event.originalTarget.id;
        console.log(this.fileArgument);
    }
}

我简化的html看起来像是:

<input 
    name="{{arg.name}}" 
    id="{{ arg.name }}"
    type="file"

    [(ngModel)]="moduleArguments[arg.name]"
    (change)="onChange($event)" 
>

触发onChange方法时,出现以下错误:

Error: Error in http://localhost:3000/app/input/input-module/input-module.component.js class InputModuleComponent - inline template:16:9 caused by: this.fileArgument is undefined

如果我注释掉我尝试将值分配给this.fileArgument.file.name的行,我的应用程序可以正常运行。

编辑:请注意,错误肯定来自于为fileArgument.file/name分配值。 event.originalTarget.files/id返回值没有错误。

1 个答案:

答案 0 :(得分:1)

您只是指定一种类型。您还需要分配对象的实例:

private fileArgument: FileArgument = new FileArgument();