2016-12-22 108 views
0

我想在对象的数组添加,但它不工作:Can not set property '0' of undefinedAngular2对象Array

我尝试把在this.positions [0] =所述PositionMap对象

我已经减少为更好的可读性代码的大小,但其余的工作

这里是我的代码:

import { Component, ViewChild, ElementRef } from '@angular/core'; 
import { NavController } from 'ionic-angular'; 
import { FormBuilder, FormGroup, Validators } from '@angular/forms'; 
import { Geolocation } from 'ionic-native'; 

declare var google; 

@Component({ 
    selector: 'page-home', 
    templateUrl: 'home.html' 
}) 
export class HomePage { 

    positions: PositionMap[] = []; 

    @ViewChild('map') mapElement: ElementRef; 

    constructor(public navCtrl: NavController) { 
    this.positions = []; 
    } 

ionViewDidLoad(){ 
    this.loadMap(); 
    this.autocomplete(); 
    } 

    autocomplete() { 
     autocompleteDepart.addListener('place_changed', function() { 
     var place = autocompleteDepart.getPlace(); 
     let tmpPosition = new PositionMap(place.geometry.location.lat(), place.geometry.location.lng()); 
     this.positions[0] = (tmpPosition); 
     return; 
     }); 
    } 
} 

export class PositionMap { 
    latitude: number; 
    longitude: number; 
    constructor(_latitude: number, _longitude: number) { 
    this.latitude = _latitude; 
    this.longitude = _longitude; 
    } 
} 

我的表在类和构造以及申报,但但在函数中尚不知道。

回答

2

您从回调函数中使用this。该回调函数必须首先绑定到this。最简单的方法是使用箭头功能:

autocompleteDepart.addListener('place_changed',() => { 
    ... 
}); 
+0

果然,它的工作原理! 非常感谢您的速度 – KyDenZ