我有这种情况:我的2个页面使用全局服务来提供培训(trainingService
。该服务具有loadTraining(type)
和destroyTraining(
类型`)。 ;
两个页面使用相同的组件(TrainingPage
),其中type
是参数:
{ path: 'training/:trainingType', loadChildren: './pages/training/training.module#TrainingPageModule' },
TrainingPage
在destroyTraining
上调用ngOnDetroy
,在loadTraining
上调用ngOnInit
,问题是当我从training1更改为traininig2时,呼叫顺序是像这样:
ngOnInit -> ngOnDestroy
所以我的trainingService
进入了一个奇怪的状态。有什么方法可以确保在实例化下一个组件之前调用ngOnDestroy?
答案 0 :(得分:1)
Angular故意这样做,这应该是正确的方法。 ngOnDestroy
是生命周期挂钩中的最后一个。
按以下顺序调用它们:
您可以在此处查看信息:https://angular.io/guide/lifecycle-hooks
您应该更改service
的使用方式,而不破坏它或使其成为组件级。
答案 1 :(得分:0)
尝试在组件级别而非全局级别或模块级别提供服务
@Component({
/* . . . */
providers: [trainingService]
})
因此在两个不同地方使用的同一组件将创建单独的服务实例。