Angular2 数组对象

Posted

技术标签:

【中文标题】Angular2 数组对象【英文标题】:Angular2 Array objects 【发布时间】:2017-05-08 11:47:30 【问题描述】:

我想添加一个对象数组,但它不起作用:Can not set property '0' of undefined

我尝试放入 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;
  

我的表在类和构造函数中声明得很好,但在函数中却不知道。

【问题讨论】:

【参考方案1】:

您正在使用来自回调函数的this。这个回调函数必须先绑定到this。最简单的方法是使用箭头函数:

autocompleteDepart.addListener('place_changed', () => 
  ...
);

【讨论】:

以上是关于Angular2 数组对象的主要内容,如果未能解决你的问题,请参考以下文章

在Angular2中对对象数组进行排序

Angular2 - 类型化对象的克隆数组

Angular2,Typescript:如何将对象数组推入另一个对象数组,其中只有几个对象字段

使用Angular2中的接口将对象推送到新数组中

对象数组的Angular2材质自动完成自定义过滤器

Angular2:从数组中注入 HTML 并渲染视图