У меня странная проблема с навигацией, возникающая в моем приложении Ionic 3 / Angular 2.Я пытаюсь установить связь между двумя компонентами (страницами), и родительский элемент выталкивает дочерний компонент в верхнюю часть стека:
goToCheckIn(client, i) {
let that = this;
this.callback = function(params) {
return new Promise((res, rej) => {
that.handleApproval(params['index'], params['approval'], true)
res()
})
}
console.log(client)
this.navCtrl.push(CheckInApprovalPage, {
client: client,
index: i,
callback: this.callback
})
}
Я реализовал обратный вызов, чтобы позволить nav.pop()
в дочернем элементе передавать параметрык родителю , как видно из этого поста .После выполнения своей работы дочерний компонент выскакивает, передавая данные родителю:
rateCheckIn(approval) {
let updated = Object.assign({}, this.client.check_in)
this.checkInService.update(updated).subscribe(
success => {
this.clientService.hideLoader()
this.callback({index: this.index, approval: approval}).then(() => this.navCtrl.pop({animate: false}))
}
)
}
Наконец, обратный вызов заставляет родителя выдвинуть тот же дочерний вид только с новым client
объектом.
handleApproval(index, approval, from_callback = false) {
let clients = _.slice(this.clients, index)
let unsolved = _.filter(clients, [ "check_in['approved']", null ])
let i = index + 1
if ( unsolved ) {
i = _.findIndex(this.clients, {id: unsolved[0]['id']})
}
if ( this.clients[ i ] ) {
this.navCtrl.push(CheckInApprovalPage, {
client: this.clients[ i ],
index: i,
callback: this.callback
})
}
}
На этом этапе дочернее представление появляется с правильными данными client
в течение примерно 0,5 с, а затем возвращается к предыдущим данным client
.Когда я регистрирую this.client
в дочернем элементе (даже после нескольких секунд ожидания), он отображает NEW client
, но в представлении все еще отображаются предыдущие данные client
.Есть идеи, почему это может произойти?