diese Funktion als Beispiel nehmen:wie ein Datum von HTTP-Aufruf in Winkeln 2 zurück, wenn der Aufruf Erfolg ist
getSessionInfo() {
this._http.get(someCorrectUrlHere)
// Don't know what this map function do
.map(res => res.json())
// Don't know what this subscribe function do
.subscribe(
data => {
if (data.response.statusCode === 200) {
** the data.response.data in this case is an object**
return data.response.data;
} else {
console.log("cant get session info");
}
},
err => console.log(err),
() => { }
);
}
Was mein Verständnis ist, wird die return data.response.data
nicht wirklich etwas zurück, wenn die getSessionInfo() sind namens.
Zum Beispiel ist die this.session noch nicht definiert.
getSession() {
this.session = this.service.getSessionInfo();
}
Was ich tun möchte, ist, geben den Wert data.response.data und weisen Sie ihn this.session.
Hinweis, sie sind in verschiedenen Klassen in Angular2 Project.
export class HeaderComponent {
service: ApiService;
session: Object;
constructor(service: ApiService) {
this.service = service;
this.getSession();
}
getSession() {
this.session = this.service.getSessionInfo();
// I expect this is the true value I expected, not undefined
console.log(this.session);
}
}
Die ApiService Klasse ist in einem anderen Ordner
@Injectable()
export class ApiService {
_http: Http;
regions: Object;
constructor(http: Http) {
this._http = http;
}
getSessionInfo() {
.......
}
}
Ich weiß, verwendet sie tun können, was ich $ q wollen verwenden, $ defer, aber was soll ich Angular 2
Es sagt: ‚Habe dann existieren nicht auf Art Abonnement‘ –
@XinruiMa an meinem aktualisierten Code aussehen ... danke :) –
, Danke, jetzt benutze ich Ihren Ansatz in meinem Projekt! Vielen Dank –