Angular 如何在数组中获取服务的响应以供使用,如图2所示
我已经声明了一个array.at.ts文件:Angular 如何在数组中获取服务的响应以供使用,如图2所示,angular,angular2-template,angular2-services,Angular,Angular2 Template,Angular2 Services,我已经声明了一个array.at.ts文件: responsearray:any=[]; 内部构造: constructor(private _dataService: UserService, private _ngZone: NgZone) { this.responsearray = this.getmarkers(id); this.moveMarker(this.responsearray); } 我想在movemarker函数中传递响应数组的更新值,它也在函数getmarke
responsearray:any=[];
内部构造:
constructor(private _dataService: UserService, private _ngZone: NgZone) {
this.responsearray = this.getmarkers(id);
this.moveMarker(this.responsearray);
}
我想在movemarker函数中传递响应数组的更新值,它也在函数getmarkers中更新,但上面未反映更新值:
getmarkers(id) {
this._dataService
.GetMarker(id)
.subscribe(res => {
this.responseformate = Object.assign({}, res);
this.responsearray = this.responseformate.responsepacket;
},
error => console.log(error),
() => {
return (this.responsearray);
})
}
问题:
constructor(private _dataService: UserService, private _ngZone: NgZone) {
this.getmarkers(id);
}
getmarkers(id) {
this._dataService
.GetMarker(id)
.subscribe(res => {
this.responseformate = Object.assign({}, res);
this.responsearray = this.responseformate.responsepacket;
this.moveMarker(this.responsearray);
},
error => console.log(error));
}
constructor(private _dataService: UserService, private _ngZone: NgZone) {
this.getmarkers(id).subscribe(() => {
this.moveMarker(this.responsearray);
});
}
getmarkers(id):Observable {
return this._dataService
.GetMarker(id)
.map(res => {
this.responseformate = Object.assign({}, res);
this.responsearray = this.responseformate.responsepacket;
},
error => console.log(error));
}
您正在从异步调用返回值,如果您想这样做,那么您必须返回可观察值,然后必须订阅事件,通过简单地返回值,您将不会得到预期的结果,它将返回可观察值 实现输出的简单方法是:
constructor(private _dataService: UserService, private _ngZone: NgZone) {
this.getmarkers(id);
}
getmarkers(id) {
this._dataService
.GetMarker(id)
.subscribe(res => {
this.responseformate = Object.assign({}, res);
this.responsearray = this.responseformate.responsepacket;
this.moveMarker(this.responsearray);
},
error => console.log(error));
}
constructor(private _dataService: UserService, private _ngZone: NgZone) {
this.getmarkers(id).subscribe(() => {
this.moveMarker(this.responsearray);
});
}
getmarkers(id):Observable {
return this._dataService
.GetMarker(id)
.map(res => {
this.responseformate = Object.assign({}, res);
this.responsearray = this.responseformate.responsepacket;
},
error => console.log(error));
}
另一种方式:
constructor(private _dataService: UserService, private _ngZone: NgZone) {
this.getmarkers(id);
}
getmarkers(id) {
this._dataService
.GetMarker(id)
.subscribe(res => {
this.responseformate = Object.assign({}, res);
this.responsearray = this.responseformate.responsepacket;
this.moveMarker(this.responsearray);
},
error => console.log(error));
}
constructor(private _dataService: UserService, private _ngZone: NgZone) {
this.getmarkers(id).subscribe(() => {
this.moveMarker(this.responsearray);
});
}
getmarkers(id):Observable {
return this._dataService
.GetMarker(id)
.map(res => {
this.responseformate = Object.assign({}, res);
this.responsearray = this.responseformate.responsepacket;
},
error => console.log(error));
}
通过简单地返回值,您将不会得到预期的结果,它将返回可观察的结果。->如何从返回的observable中获取值。然后您必须再次订阅并从getmarkers函数返回observable。我也更新了答案,请尝试一下。