Ich habe folgendes Service in Angular2:Wert auf eine interne Variable in einer Funktion angular2 Weisen
@Injectable()
export class MyService{
private myServiceUrl= ....
constructor(private http: Http) { }
getService(): Promise<MyObject> {
return this.http.get(this.myServiceUrl).map(response => response.json())
.toPromise();
}
}
Und ich habe diese Funktion in einer meiner Komponenten:
myFunction(): any{
let toReturn: any;
this.myService.getService().then(result => toReturn = result);
console.log(toReturn);
return toReturn;
}
Grundsätzlich als Sie können sehen, ich möchte in toReturn die Objekte speichern, die es durch das Versprechen von myService zurückgegeben wird. Ich schaue auf den Rest Anruf, den ich habe, und ich bekomme den richtigen JSON, aber wenn ich versuche, es in der internen Variable zu speichern, werde ich in toReturn undefiniert.
Allerdings, wenn ich versuche, dies:
this.myService.getService().then(result=> console.log(result));
Ich kann den json Ich möchte sehen.
Ich kann eine Funktion wie folgt tun:
getService(address: string) {
this.myService.getService().then(result=> this.result= result);
}
Aber ich ziehe meine Funktion zurückzukehren, ein Objekt zu machen. Was mache ich falsch? Denken Sie daran,
Die AFAIR-Geodcoding-API wird ebenfalls nicht von zone.js abgedeckt und benötigt einen 'zone.run (...)', damit der Code in der Funktion innerhalb der Angulars-Zone ausgeführt werden kann. –
Das Versprechen wird von googleMapGeocodingService zurückgegeben, sodass ich nicht auf das Versprechen zugreife. – Manuelarte
Jungs, vergessen Sie Geocoding, lassen Sie uns einen anderen Namen geben, der Dienst funktioniert ... Was es nicht funktioniert, ist die Zuweisung zu einer internen Variable. Wenn ich geocoding => console.log (geocoding) mache, kann ich den kompletten JSON sehen. – Manuelarte