您好我正在尝试将JSON对象数组更改为TypeScript类。但是,每次尝试将Json对象属性分配给typescript属性时,该方法似乎都会崩溃。
Typescript接口
export interface marker {
lat: number;
lng: number;
}
打字稿方法
public markers: marker[];
ngOnInit() {
this.mapService.GetPhotosById(this.id).subscribe(resultlisting => {
this.values = resultlisting;
console.log(this.values); //SHOW IN PICTURE
this.ChangetoMarkers(this.values);
}, error => this.errorMessage = error);
}
ChangetoMarkers(someArray: Observable<any[]>) {
for (let entry of someArray) {
let mark: marker;
mark.lat = Number(entry.latitude); //Attempt to convert to number
mark.lng = +entry.longitude; //2nd attempt to convert to number
this.markers.push(mark);
};
console.log(this.markers); //DOES NOT REACH THIS
}
地图服务
GetPhotosById(id: string): Observable<any> {
return this.http
.post(this.config.apiEndpoint + "mapPhotos/" + id)
.map(this.extractJson).catch(this.handleErrors);
};
private extractJson(res: Response) {
let data = res.json();
return data;
}
private handleErrors(error: Response | any) {
let errMsg: string;
if (error instanceof Response) {
const body = error.json() || '';
const err = body.error || JSON.stringify(body);
errMsg = `${error.status} - ${error.statusText || ''} ${err}`;
} else {
errMsg = error.message ? error.message : error.toString();
}
console.log(errMsg);
return Observable.throw(errMsg);
}
我已经研究了这个问题,并试图应用整数演员,但它似乎没有用。任何建议都会很棒。
答案 0 :(得分:2)
正如Mauricio Poppe在评论中指出的那样,您正在尝试访问没有价值的变量的属性。
changeToMarkers(points: Array<{latitude: number, longitude: number}>) {
this.markers = entries.map(({latitude: lat, longitude: lng}) => ({
lat,
lng
}));
console.log(this.markers);
}
不需要进行数字转换,因为纬度和经度的反序列化表示已经是兼容的数值。
答案 1 :(得分:1)
试试这个:
#! /bin/sh
exec '/usr/bin/bison' -y "$@"
它不像Aluan Haddad那样优雅,但它应该允许你通过记录someArray之前的某些原因确定它在哪个点上断了。循环,推动之前的标记,以及此标记后确定问题的确切位置。