Ionic2/Angular2:无法读取属性';推动';未定义的

Ionic2/Angular2:无法读取属性';推动';未定义的,angular,Angular,我有一个问题在过去的24小时里一直困扰着我,我似乎无法集中注意力,所以任何建议都将不胜感激。我有这样一门课: @Component({ selector: 'page-product-list', templateUrl: 'product-list.html' }) export class ProductListPage { public detailPages: ProductDetailsPage[] = []; /* Also tried:

我有一个问题在过去的24小时里一直困扰着我,我似乎无法集中注意力,所以任何建议都将不胜感激。我有这样一门课:

@Component({
    selector: 'page-product-list',
    templateUrl: 'product-list.html'
})
export class ProductListPage {
    public detailPages: ProductDetailsPage[] = [];
    /* Also tried:
        public detailPages: ProductDetailsPage[] = new Array<ProductDetailsPage>();
        public detailPages: ProductDetailsPage[] = <ProductDetailsPage[]>[];
    */
    constructor( ... ) {
     /* Also tried it here:
        this.detailPages = [];
        and: 
        this.detailPages = new Array<ProductDetailsPage>();
        this.detailPages = <ProductDetailsPage[]>[];
    */
    }

    public register(page: ProductDetailsPage) {
        // This line gives an error: 
        // Cannot read property 'push' of undefined
        this.detailPages.push(page);
    }
}
@组件({
选择器:“页面产品列表”,
templateUrl:'product list.html'
})
导出类ProductListPage{
公共详细信息页面:ProductDetailsPage[]=[];
/*还尝试:
public detailPages:ProductDetailsPage[]=new Array();
公共详细信息页面:ProductDetailsPage[]=[];
*/
构造函数(…){
/*也在这里尝试过:
this.detailPages=[];
以及:
this.detailPages=新数组();
this.detailPages=[];
*/
}
公共注册(第页:ProductDetailsPage){
//这一行给出了一个错误:
//无法读取未定义的属性“push”
此.detailPages.push(第页);
}
}
我理解这个错误意味着数组还没有初始化,但为什么没有呢

我试着在构造函数中初始化它,但它仍然给我同样的错误。很明显,我搞错了,但是如果你不能在构造函数中初始化东西,那么我到底在哪里呢


提前感谢

发现问题。我是从*ngFor循环内部调用register函数的,所以它是从这个范围执行的。这对我来说不是很清楚

谢谢你对我的帮助

干杯


--B

如何以及在何处调用寄存器方法?