我正在将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)
}
答案 0 :(得分:1)
格式化代码后,看起来你的console.log
超出了你的可观察订阅(实际上,它在某处丢失了......),因此,它在请求完成之前出现。这可以解释为什么第二次有效。
刚刚使用此弹药进行了测试:http://plnkr.co/edit/qktCQKt9LLrzqogdkRho对我来说似乎没问题。