Also ging ich durch die Dokumentation auf der Angular Website, und ich baute die grundlegende "Heroes" App.Wie kann ich auf diese Variable zugreifen? this.hero
Ich habe versucht, auf den Variablenhelden der Eingabe zuzugreifen, da ich eine bestimmte Variable habe, die ich ausgeben möchte, aber ich bekomme Fehler.
Error: Uncaught (in promise): TypeError: this.hero is undefined
Dieser Aufruf funktioniert in jedem anderen Verfahren, zum Beispiel ein Verfahren, das bei den Tasten Verwendung genannt wird, aber wenn ich versuche, es in ngOnInit() aufzurufen, es stürzt ab und gibt mir, dass Fehler.
Hier ist mein Code:
this.route.params.switchMap((params: Params) => this.heroService.getHero(+params['id'])).subscribe(hero => this.hero = hero);
console.log(this.hero.background);
wo Hintergrund ein Attribut des Helden ist.
Ich brauche keinen spezifischen Code - das war nur etwas, das nicht im Tutorial behandelt wurde und ich hätte gerne eine Richtung.
Ich habe viele Stunden damit verbracht, zu suchen, aber ich werde immer erfolglos bleiben - jetzt, bevor ich alle meine hört, kann jemand mir eine Führung geben?
Got für Code gefragt so ist es hier ist
import { Component, Input, OnInit } from '@angular/core';
import { ActivatedRoute, Params } from '@angular/router';
import { Location } from '@angular/common';
import { HeroService } from './hero.service';
import { Hero } from './hero';
import 'rxjs/add/operator/switchMap';
let body = document.getElementsByTagName('body')[0];
@Component({
selector: 'hero-detail',
templateUrl: './hero-detail.component.html',
styleUrls: [ './hero-detail.component.css' ]
})
export class HeroDetailComponent implements OnInit {
@Input() hero: Hero;
constructor(
private heroService: HeroService,
private route: ActivatedRoute,
private location: Location
) { }
oldBody:string = body.style.backgroundImage;
ngOnInit(): void {
this.route.params.switchMap((params: Params) => this.heroService.getHero(+params['id'])).subscribe(hero => this.hero = hero);
console.log(this.hero.background);
}
ngOnDestroy() {
body.style.backgroundImage = this.oldBody;
}
goBack(): void {
this.location.back();
}
updateBackground(): void {
body.style.backgroundImage = "url('"+this.hero.background+ "')";
}
save(): void {
this.heroService.update(this.hero)
.then(() => this.goBack());
}
}
Folgen Sie Ihre Logik Schritt Schritt und stellen Sie sicher sein, dass die „this“ Schlüsselwort im Kontext ist, dass Sie denken es ist. – Bindrid
@Bindrid Richtig, in meinen Variablen-Deklarationen habe ich '@Input() held: Hero;' also würde der Zugriff auf dieses "" Schlüsselwort verwendet werden, nicht wahr? Ich meine, es gibt keinen anderen Weg, den ich kenne - wenn ich normalen Helden ohne dieses Schlüsselwort verwende, gibt es mir einen Fehler, der mich auffordert, auf die Instanz zu verweisen. – seeocon
Können Sie bitte etwas mehr Code zur Verfügung stellen? – Tamas