我有一个显示城市的页面: 此页面使用名为“ CitiesProvider”的提供程序 由于这些城市可能会发生变化,因此我将“订阅”设置为:
this.citiesSubscription = this.CitiesProvider.salesChanged
.subscribe(
(cities: City[]) => this.cities = cities
)
在哪里放置“取消订阅”方法的最佳位置是:
ionViewWillLeave
或ionViewDidLeave
或ionViewWillUnload
如果我把它放在另一个地方会出什么问题?
使用(离子)生命周期飞节或使用
有什么区别 ngOndestroy
来自Anglar或来自角度的任何飞节(因为离子页面也是角度分量
答案 0 :(得分:1)
您应使用 ngOnDestroy 或 ionViewWillUnload 取消订阅Observables
。
每次您离开页面时,ionViewDidLeave
和ionViewWillLeave
钩子都会被触发,但并不表示页面被破坏/从dom中移除。
示例:
如果您使用NavController
将页面推入堆栈,则会触发ionViewDidLeave
但不会触发销毁钩子,因为该页面实际上停留在dom中。如果您向后浏览,订阅仍将确保所有内容都是最新的。
如果您要在退出页面时退订,则需要在ionViewWillEnter
生命周期挂钩中再次订阅。