Bei http-Aufrufen möchte ich den eingehenden JSON einer lokalen Variablen in meiner Komponente zuweisen und sie in der Ansicht anzeigen.HTTP: Lokale Variable ist nach HTTP-Anforderung nicht definiert
Service:
getCases(){
return this.http.get('someUrl')
.map((res: Response) => res.json())
}
Komponente:
@Component({
template: `
<h1>Cases</h1>
<hr>
<br>
<table>
<tr *ngFor="let acase of cases" >
<td>{{acase.name}}</td>
</tr>
</table>
`,
})
export class CaseListComponent implements OnInit {
//local variable, need to have use of this!
acase: Case;
cases: Case[];
constructor(public _service: CaseService, public _route: ActivatedRoute) {
}
ngOnInit() {
this._service.getCases()
.subscribe(cases => this.cases = cases);
console.log(this.cases) // undefined!!
}
ngAfterContentInit() {
console.log("cases: ", this.cases) //undefined!
}
}
Alles ist in Ordnung. Gibt es noch etwas, das Sie übersehen haben? Ändern Sie im Konstruktor public in private. – micronyks
Kannst du auch am Ende deines Mappings einen Typ-Spezifizierer werfen? Etwas wie: '.map ((res: Response) => res.json() als Case [])' –
Okay, versuch das 'getCases(): Observable { gib this.http.get (' someUrl ') zurück ... } ' –
micronyks