无法读取离子

时间:2018-06-14 13:40:35

标签: angular typescript ionic-framework

我不知道为什么我会收到这个错误。有人可以帮帮我吗。 我已将变量声明为

jdetails: Array<any>;
cards: Array<any>;

这是我的方法

ionViewDidLoad() {
    console.log('ionViewDidLoad FeedsPage');
    //for new card
    this.addnewcard();
    console.log(this.cards);
  }
addnewcard() {
    this.jobdetail.getJobDetails().then((data) => {
      //console.log(data);
      this.jdetails = data;
    });
    for (let val of this.jdetails) {
      this.cards.push(val);
    }
  }

当我按下按钮时,“voteUp”方法被调用

voteUp() {
    let removedcard = this.cards.pop();
    this.addnewcard();
  }

我面临着类型错误。

  

错误类型错误:无法读取未定义的属性“长度”   FeedsPage.webpackJsonp.260.FeedsPage.addnewcard(feeds.ts:171)at   FeedsPage.webpackJsonp.260.FeedsPage.ionViewDidLoad(feeds.ts:63)at at   ViewController._lifecycle(view-controller.js:486)at   ViewController._didLoad(view-controller.js:369)at   在t.invoke的NavControllerBase._didLoad(nav-controller-base.js:768)   (polyfills.js:3)在t.invoke的Object.onInvoke(core.js:4749)   (polyfills.js:3)在r.run(polyfills.js:3)的NgZone.run   (core.js:4566)

1 个答案:

答案 0 :(得分:2)

注意:当Cannot read property ‘length’ of undefined显式调用时,通常会出现错误arr.length,我在您的示例中看不到。我可以看到一些我希望看到this.cards is undefined的案例。

您在this.jdetails成员设置之前循环(.then表示异步执行):

this.jobdetail.getJobDetails().then((data) => {
  //console.log(data);
  this.jdetails = data;
});
for (let val of this.jdetails) {
  this.cards.push(val);
}

通过将循环移动到.then函数中,在检索数据之后执行数据的处理。

this.jobdetail.getJobDetails().then((data) => {
  //console.log(data);
  this.jdetails = data;

  for (let val of this.jdetails) {
    this.cards.push(val);
  }
});

我无法看到您的所有代码,因为您没有提供自包含的示例,但是当您调用pushpop数组已初始化时,会有一个假设。如果你不这样做,你的手上可能会有另一个错误。在内联或构造函数中初始化它:

cards: any[] = [];