Wie feuern Funktion, die Back-End-Daten benötigt? Mein Ziel ist es getPersons()
abzufeuern, die 4. auf getCities()
und getCars()
mit kantigem hängtAngular 4 fire-Funktion nach Serverdaten geladen
export class Person {
constructor(
public cities: any[],
public cars: any[]
) { }
}
In Komponente nenne ich:
public ngOnInit(): void {
this.getCars();
this.getCities();
this.getPersons();
}
EDIT Service:
public getCars(): Observable<CarsList> {
return this.http.get(this.carsUrl)
.map((res: Response) => res.json())
.catch((error: Response) => Observable.throw(
this.errorHandlerService.showError(getCarsError)));
}
Component :
public getPersons(): void {
this.personsService.getPersons()
.subscribe(
(data) => {
this.persons = data;
this.persons .forEach((person, index) => {
person.carName = this.cars.find((car) => car.id === person.carId).name;
console.log('error here because this.cars is still undefined')
}
)
}
Problem ist, dass getPersons()
gefeuert wird, bevor getCities()
und getCars()
geladen werden und Daten hängt davon ab. So this.cities
oder this.cars
Objekte sind null und App-Absturz. Wie wird getPersons()
ausgelöst, wenn getCities()
und getCars()
geladen sind? Bereits versucht AfterViewInit
mit setTimeout
Problemumgehungen, die nicht funktionieren.
Wie sind sie verwandt? Sind sie asynchron? – briosheje
Bitte zeigen Sie den Code 'getCars()', 'getCities()' und 'getPersons()'. –
aktualisiert hinzugefügt Dienst und Komponente – TeodorKolev