Así que tengo un objeto que en cierto punto obtiene un valor para cada clave pero de repente pierde todos los valores clave.
los valores clave simplemente se vacían y en la consola hay un mensaje en el objeto que dice: "este valor se evaluó al expandirse por primera vez. Puede haber cambiado desde entonces", pero no cambio su valor en ningún otro lugar.
mi servicio:
image = { name: "", path: "", data: "" }; async loadFileData(fileNames: string[]) { for (let f of fileNames) { const filePath = `${IMAGE_DIR}/${f}`; const readFile = await Filesystem.readFile({ directory: Directory.Data, path: filePath }); this.images.push({ name: f, path: filePath, data: `data:image/jpeg;base64,${readFile.data}` }); // testing this.image.name = f; this.image.path = filePath; this.image.data = `data:image/jpeg;base64,${readFile.data}`; } console.log('my image: ', this.image); } async loadFiles() { this.images = []; const loading = await this.loadingController.create({ message: 'loading data...', }); await loading.present(); Filesystem.readdir({ directory: Directory.Data, path: IMAGE_DIR }).then(result => { this.loadFileData(result.files); }, async err => { console.log('err: ', err); await Filesystem.mkdir({ directory: Directory.Data, path: IMAGE_DIR }); }).then(_ => { loading.dismiss(); }); }Mi componente:
this.photoService.loadFiles(); console.log('my object: ', this.photoService.image); console.log('is my object empty? ', JSON.stringify(this.photoService.image) === '{}');Su valor original era image = { name: "", path: "", data: ""}; .
Luego lo cambiaste para que se volviera como { name: "164....", path: "stored...", data: "data..."};
Puedo hacer una demostración similar, dentro de la consola: 
Entonces, ¿qué sucede cuando presiono el botón para expandir? 
Ahora muestra que los datos se cambian a "lo que sea", etc., pero su valor original image = { name: "", path: "", data: ""}; todavía se muestra (registrado).
El formulario expandido muestra los nuevos datos. Los valores vacíos pertenecían a datos antiguos .
Se trata de asyn y la memoria de javascript.
Cuando ejecutas console.log(this.photoService.image)
this.photoService.loadFiles(); Esta corriendo
Valor de esto: { name: "", path: "", data: ""}
Cuando comprueba el valor de la consola:
this.photoService.loadFiles(); acabado
se actualizó la memoria de this.photoService.image
Valor de esto => { name: "xxx....", path: "yyy...", data: "zzz..."}