Hi I got a function which will update after a http request to the server. It seems that the console.log show that the value has been updated but the UI is not updating unless I
I was facing the exact same issue in Ionic 4 and this is how I fixed it:
import { ChangeDetectorRef } from '@angular/core';
constructor(private changeRef: ChangeDetectorRef)
fileTransfer.upload(this.created_image, upload_url, options)
.then((data) => {
console.log("success:"+data.response); //This is showing correct response
var obj = JSON.parse(data.response);
this.sv_value = obj.value;
console.log(this.sv_value); //This is showing correct value
this.changeRef.detectChanges(); // ---> Add this here
}, (err) => {
console.log("failure:");
})
Essentially by using detectChanges()
, we are forcing the platform to detect the changes and kick them into the UI.
Try placing this.sv_value = obj.value;
inside NgZone.run();
to make Angular detect the change.
import { Component, NgZone } from "@angular/core";
...
export class MyComponentPage {
constructor(
private zone: NgZone
...
){ }
yourFunction(){
fileTransfer.upload(this.created_image, upload_url, options)
.then((data) => {
console.log("success:"+data.response); //This is showing correct response
var obj = JSON.parse(data.response);
this.zone.run(() => {
this.sv_value = obj.value;
});
console.log(this.value); //This is showing correct value
}, (err) => {
console.log("failure:");
});
}
}