Ich habe home.ts, die service.ts aufrufen, um Artikel aus dem Speicher zu laden.Ionic 2 Laden von Artikeln von Promise in ngOnInit
export class HomePage {
products;
ionViewDidEnter() {
this.products = this.productService.products;
}
ngOnInit(){
this.productService.fetchProducts();
this.products = this.productService.products;
}
}
export class ProductService{
products;
fetchProducts(){
this.storage.get('products') // returns a promise which returns data or error
.then(
(products) => {
// assign to this.expenses only if not null. When first //strt, can be null. If null, assign empty array []
products? this.products = products : this.products = [];
console.log("fetch Products:" + this.products);
return this.products;
})
.catch(
err => console.log(err)
);
}
ich die Einzelteile in home.html
dann machen. Das Problem ist, die Artikel werden beim ersten Start der App nicht angezeigt. Wenn ich jedoch zu einem anderen Bildschirm navigiere und zu home.ts zurückkehre, werden die Elemente wieder gut gerendert. Ich verstehe, dass dies wegen ionViewDidEnter ist und vielleicht das erste Mal, das Versprechen in fetchProducts ist asynchron. Aber wie bekomme ich die Artikel zum ersten Mal auf ngOnInit
Liste?
Mögliches Duplikat von [Wie gebe ich die Antwort von einem asynchronen Aufruf zurück?] (Http://stackoverflow.com/questions/14220321/how-do-i-return-the-response-from-an-asynchronous-call) – echonax
Dank dafür. Aber was wäre der spezifische Code in meinem Fall? – Jason