我正在制作一个ionic 3应用程序,并希望在每个导航上添加一个加载微调器。因此,我创建了一个loadingService,并将其添加到我的导航服务中,以便自动处理所有导航。
为了启动和停止装载机,我使用了:
export class LoaderService{
loading: Loading;
constructor(public loadingCtrl: LoadingController ){
this.loading = this.loadingCtrl.create({
spinner: 'crescent'
})
}
startLoader(){
this.loading.present();
}
stopLoader(){
this.loading.dismiss();
}
}
在第一次导航后,我得到错误
错误:未捕获(在promise中(:已插入视图销毁
错误错误:未捕获(承诺中(:未找到removeView
问题是this.loading.dismiss()
加载程序实例没有被正确解雇,所以在启动新加载程序之前必须做的是:
this.loading.dismissAll();
this.loading = null;
所以我改变了我的服务(这可能会更好,但你会明白的(。
export class LoaderService{
loading: Loading;
constructor(public loadingCtrl: LoadingController ){
}
startLoader(){
this.loader();
return this.loading.present();
}
stopLoader(){
this.loading.dismissAll();
this.loading = null;
}
private loader(){
if(this.loading && this.loading.instance){
this.stopLoader();
}
this.loading = this.loadingCtrl.create({
spinner: 'crescent',
dismissOnPageChange: true,
})
}
}