Les liaisons de données ne sont pas mises à jour si leurs valeurs sont modifiées après une modification de l'ordre du jour. await
déclaration.
handle() {
this.message = 'Works'
}
async handle() {
this.message = 'Works'
}
async handle() {
await new Promise((resolve, reject) => {
resolve()
})
this.message = 'Works'
}
async handle() {
await new Promise((resolve, reject) => {
setTimeout(() => resolve(), 3000)
})
this.message = 'Doesn\'t work'
}
handle() {
new Promise((resolve, reject) => {
setTimeout(() => resolve(), 3000)
})
.then(() => this.message = 'Works')
}
Pourquoi les deux derniers ne se comportent-ils pas de la même manière ? Ne sont-ils pas censés être la même chose ?
Ionic : 3.9.2
Angulaire : 5.0.3
TypeScript : 2.4.2
EDIT : J'ai rencontré un autre problème qui pourrait être utile à certains.
La modification des valeurs d'une liaison dans le constructeur se comporte différemment de ionViewDidLoad ou ngOnInit !
constructor(private zone: NgZone) {
// This will cause the same problems, bindings not updating
this.handle()
}
constructor(private zone: NgZone) {
// Unless you do this...
this.zone.run(() => {
this.handle()
})
}
ionViewDidLoad() {
// But I think this is better/cleaner
this.handle()
}