【问题标题】:Cannot read property 'push' of undefined angular无法读取未定义角度的属性“推送”
【发布时间】:2020-04-24 19:33:34
【问题描述】:

onSubmit 事件引发时,我试图将一个新值推到数组的末尾。 我的代码如下所示:

  accounts: Account[] = [];
  feeAccount: Account = new Account();

  onSubmit(f: FormsModule) {
    console.log('Fee account -> ' + this.feeAccount);
    this.accounts.push(this.feeAccount);
  }

问题是我收到一个错误:Cannot read property 'push' of undefined.,尽管在它尝试推送之前记录了正确的值。这里有什么问题?我相信如果它以相同的方法正确记录,它就被定义了,还是我出错了?

【问题讨论】:

  • 检查您是否无意中改变了accounts,它似乎在上面的代码中被正确定义,但如果您收到该错误,则表明它无法访问this.accounts,建议它已从空数组更改为未定义。

标签: angular typescript


【解决方案1】:

看来,在您的代码中,您正在为 accounts 变量分配另一种类型或意外地对其进行变异,这显然不再是 array

添加console.log 以在提交操作时调试accounts 对象

console.log(this.accounts);
console.log(typeof this.accounts);

会给你清晰的想法

【讨论】:

  • 该类型不会导致错误,因为 JS 在运行时实际上没有类型检查。错误是由于 b/c 某处 this.accounts 的值已更改,而不是类型 :)
  • 我不是在谈论类型检查。但类型实际上是从数组变为其他东西。作者将其定义为数组,但不再是。它是其他东西,例如 null、undefined、object 或 vs
  • @DervişKayımbaşıoğlu 它是未定义的,但它不应该是未定义的,因为现在我正在尝试定义它吗?
  • @DervişKayımbaşıoğlu 听起来像是语义与值与类型的细微差异。
猜你喜欢
  • 2021-03-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-12
  • 1970-01-01
相关资源
最近更新 更多