Angular2推送数组第一个索引未定义

时间:2017-03-09 20:28:16

标签: angular typescript

我正在将google坐标推送到数组中,但如果我打印console.log(this.markersData),则结果为带有对象的空数组 - > []

第二次点击后,我得到一个包含像[object]

这样的对象的数组

http://localhost:9080/myclient/oauth/token

我也需要第一个数组的数据。我做错了什么?

HTML

<button (click)="addPlace()" > </button>

Angular2功能

import {Component, Input,OnInit, Output, EventEmitter,ElementRef} from '@angular/core';
import { Http, Headers, RequestOptions } from "@angular/http";
import {Observable} from 'rxjs/Rx';   

export class GoogleMapComponent  {

    markersData:any[] = [];

    addPlace(){
       this.http.get('https://maps.googleapis.com/maps/api/geocode/json?address=Rom').map((res: any) => res.json())
          .subscribe((res: any) => {
             // console.log(res.results[0].geometry.location);
             var geo = res.results[0].geometry.location;
                if(geo != undefined){
                   this.markersData.push(geo);  
                }
           }, 
           (error: any) => {
              console.log(error);
           });
       }
        console.log(this.markersData)
    }

1 个答案:

答案 0 :(得分:1)

格式化代码后,看起来你的console.log超出了你的可观察订阅(实际上,它在某处丢失了......),因此,它在请求完成之前出现。这可以解释为什么第二次有效。

刚刚使用此弹药进行了测试:http://plnkr.co/edit/qktCQKt9LLrzqogdkRho对我来说似乎没问题。