【发布时间】:2019-12-02 06:37:54
【问题描述】:
我正在尝试在 Typescript 中声明一个对象数组。但是,我在检索对象时遇到错误。下面是我的代码。图片显示this.attachments的输出。
info: Info[];
if (this.attachments.length > 0) {
this.previewInfo(this.attachments);
}
previewInfo(infos) {
this.info = [];
for (let i = 0; i < infos.length; i++) {
let reader = new FileReader();
reader.onload = (e: any) => {
var temp = new Info;
temp = {
id: i,
url: e.target.result,
message: ""
}
this.info.push(temp);
}
reader.readAsDataURL(infos[i]);
}
}
我得到的结果前面包含一个空数组,看起来像这样。
[]0: {id: 0, url: "test1", message: ""}
1: {id: 1, url: "test2", message: ""}
2: {id: 2, url: "test3", message: ""}
当我尝试使用
检索它们时,这会导致未定义this.info[0]
如果我跳过第二行 this.info=[],我会收到一条错误提示
无法读取未定义的属性“0”
我是不是声明错了?如何按索引检索信息?
【问题讨论】:
-
如果您共享更多代码会更好,但有一些基本错误,首先,您在没有
this的情况下声明信息,但您尝试在下一行使用this访问info,this.info将在您的上下文中创建新的 info 对象,我认为这是一些事件处理程序,现在如果您在删除第二个时尝试访问 this.info,您将收到错误,因为在 @987654335 上没有任何info@上下文,阅读tylermcginnis.com/this-keyword-call-apply-bind-javascript & developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… -
@Harshkurra 我无法在打字稿中使用
this声明信息。 -
显示你在哪里调用 previewInfo(infos)
-
@LuisRico 根据请求更新。
-
最好在这里分享一个 MVCE stackblitz
标签: angular typescript asynchronous callback