我不知道为什么我会收到这个错误。有人可以帮帮我吗。 我已将变量声明为
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)
答案 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);
}
});
我无法看到您的所有代码,因为您没有提供自包含的示例,但是当您调用push
或pop
数组已初始化时,会有一个假设。如果你不这样做,你的手上可能会有另一个错误。在内联或构造函数中初始化它:
cards: any[] = [];