У меня есть страница, на которой показаны города: на этой странице используется поставщик CitiesProvider. Поскольку эти города могут меняться, я поставил подписку, например:
this.citiesSubscription = this.CitiesProvider.salesChanged
.subscribe(
(cities: City[]) => this.cities = cities
)
Где лучше всего разместить метод отказа от подписки между:
ionViewWillLeave
или ionViewDidLeave
или ionViewWillUnload
а что пойдет не так, если я вставлю его в другой?
И в чем разница между использованием этих (ионных) перемычек жизненного цикла или использованием
ngOndestroy
от Anglar или любые скакательные суставы, исходящие от angular (поскольку ионные страницы также являются угловым компонентом
Вы должны использовать ngOnDestroy или ionViewWillUnload, чтобы отказаться от подписки на Observables
.
Хуки ionViewDidLeave
и ionViewWillLeave
срабатывают каждый раз, когда вы покидаете страницу, но не указывают на то, что страница уничтожается / удаляется из dom.
Пример:
Если вы используете NavController
для проталкивания страницы в стек, срабатывает ionViewDidLeave
, но не ловушка уничтожения, потому что страница фактически остается в dom. Если вы вернетесь назад, подписки по-прежнему гарантируют, что все обновлено.
Если вы откажетесь от подписки, покидая страницу, вам нужно снова подписаться в ловушке жизненного цикла ionViewWillEnter
.