Winkel 2 dann Versprechen
Mache ich die Eckigen 2-tutorial mit den Helden App. Ich bin an dem "Http" - Teil des Tutorials. (link)
Es ist ein Aufruf an den server mit der folgenden Methode in Helden.service.ts
getHeroes(): Promise<Hero[]> {
return this.http.get(this.heroesUrl)
.toPromise()
.then(response => response.json().data)
.catch(this.handleError);
}
Und dann ich versuche, die zurückgegebenen Daten in Helden.Komponenten.ts unten, aber ich bin nicht in der Lage zu implementieren, die dann die ordnungsgemäße Funktion. Ich bin immer diese Fehler-Konsole
AUSNAHME: Fehler: Uncaught (bei Versprechen): TypeError: das ist null
export class HeroesComponent implements OnInit {
title = 'Tour of Heroes';
heroes: Hero[];
selectedHero: Hero;
constructor(
private router: Router,
private heroService: HeroService) { }
getHeroes() {
this.heroService.getHeroes().then(function(value) {
//SUCCESS
console.log(value); //this is working
this.heroes = value; //this is not working
console.log("I am inside then SUCCESS")
console.log(title);
console.log(this.heroes);
}, function(error) {
//FAILURE
console.log(error);
})
}
ngOnInit() {
this.getHeroes();
}
Weißt du, warum ich kann nicht Konsole.melden Sie diese.Helden und Titel ?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Möchten Sie vielleicht zu prüfen, Fetten Pfeil-notation zu vermeiden Umfang Konflikte. In deinem Fall diese nicht auf die Instanz der Klasse, sondern die sucesscallback von Ihrem Versprechen statt.
Es ist ein Geltungsbereich Problem, in Typoskript es gibt eine Menge Spielraum-Probleme bei der übergabe-code zu jquery oder anderen javascript-APIs und, in deinem Fall mit lambda-Funktionen.
Um dieses problem zu lösen, müssen Sie speichern Sie die scope-variable:
Ein sehr wichtiger Hinweis:
Verwenden Sie nicht _diese speichern Ihre Anwendungsbereich, weil es ein reserviertes Schlüsselwort verwendet Typoskript, das gleiche zu tun, aber automatisch, dass es leider nicht in der kommentierten Fällen.
Danke für alle Eure Antworten. Es war ein scope Problem.
Ich benutzte das fat-arrow notation, und es löste das problem.
Sind Sie wahrscheinlich laufen in einigen scoping Probleme... die dadurch, dass Sie sucht nicht das Sie denken, es ist. versuchen Sie, somehting wie diese: