Sam*_*los 25 ionic-framework ionic-view ionic2 ionic3
我的Ionic应用程序工作正常,我没有做任何事情,但突然间我得到了这个错误,我不知道为什么.
"错误:未捕获(在承诺中):找不到removeView
Man*_*egi 49
删除组件不是任何问题的解决方案.
问题原因: 有多个调用来解除加载组件的方法.
解决方案: 在创建装载机,检查装载情况是不是 已经存在,才创建另一个实例.
类似地,在解除加载器时,检查加载器实例是否存在,然后才解除它.
码:
constructor(private _loadingCtrl: LoadingController){}
loading;
showLoading() {
if(!this.loading){
this.loading = this._loadingCtrl.create({
content: 'Please Wait...'
});
this.loading.present();
}
}
dismissLoading(){
if(this.loading){
this.loading.dismiss();
this.loading = null;
}
}
Run Code Online (Sandbox Code Playgroud)
Raj*_*dev 41
如果要手动关闭离子加载,可能需要按照以下示例进行操作.我在离子实验室测试过的工作正常.
Ionic 3+
Run Code Online (Sandbox Code Playgroud)
注意: 如果你手动调用this.loading.dismiss(),我不建议使用dismissOnPageChange,你可能会解雇相同的加载两次.
为什么以下解决方案有效?
我认为this.loading.present()
是一种异步方法,因此我们无法this.loading.dismiss()
在this.loading.present()
仍在运行时手动调用.
因此,如果我们需要手动关闭,我们需要确保已经存在加载并且有一个视图来解除它,我们应该使用其他方法,present().then
如下面的代码.
但是我不确定为什么我们在旧的框架版本(2.0.3)中没有这个问题.
import { Loading, LoadingController } from 'ionic-angular';
export class ApnSearchPage {
loading: Loading;
constructor(private loadingCtrl: LoadingController) { }
ionViewDidLoad() {
this.createLoader();
}
createLoader(message: string = "Please wait...") { // Optional Parameter
this.loading = this.loadingCtrl.create({
content: message
});
}
public searchClick() {
this.createLoader();
this.loading.present().then(() => {
this.searchService.submitRequest(params, data)
.subscribe(response => {
this.loading.dismiss();
}, error => {
this.loading.dismiss();
this.errorMessage = <any>error
});
});
}
}
Run Code Online (Sandbox Code Playgroud)
参考链接,因此只发布有用的工作提示和代码.
我希望这有帮助!
归档时间: |
|
查看次数: |
28500 次 |
最近记录: |