Ionic - Ошибка: Uncaught (в обещании): removeView не был найден
Мое приложение Ionic работало нормально, и я ничего с ним не сделал, но вдруг я получаю эту ошибку, и я не знаю почему.
"Ошибка: Uncaught (в обещании): removeView не был найден
9 ответов
Если вы хотите вручную отключить ионную загрузку, вам может потребоваться следовать приведенному ниже примеру. Который работает нормально, я проверил в ионных лабораториях.
Ionic 3+
Примечание. Если вы вызываете 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
});
});
}
}
Ссылка Ссылка, следовательно, размещены только полезные и рабочие советы и код.
Надеюсь, это поможет!
Удаление компонента не является решением любой проблемы.
Причина проблемы: есть несколько вызовов, чтобы отклонить метод загрузки компонента.
Решение: при создании загрузчика проверьте, не существует ли экземпляр загрузчика, только затем создайте другой экземпляр.
Точно так же, отклоняя загрузчик, проверьте, существует ли экземпляр загрузчика, только затем отклоните его.
Код:
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;
}
}
Мне удалось решить эту проблему, удалив LoadingController из моего компонента.
Для меня проблема была в том, что у меня было
dismissOnPageChange: true
когда я создал loadingCtrl.
.Dismiss() вызывался слишком скоро после.present() (во время локального тестирования api реагирует очень быстро), и кажется, что этот параметр вызвал проблему. Удаление это решило это для меня.
Для меня простое исправление менялось:
this.loader.dismiss()
кому:
this.loader.dismiss().then(value => {
console.log("dismiss worked!");
}, reason => {
console.log("dismiss rejected!");
});
Вот один для alertController, но работает очень похоже.
logout() {
let prompt = this.alertCtrl.create({
title: 'Logout',
subTitle: 'Are You Sure You Want To Logout?',
buttons: [
{
text: 'No',
handler: data => {
let navTransition = prompt.dismiss();
navTransition.then(() => {
this.navCtrl.pop();
});
return false;
}
},
{
text: 'Yes',
handler: data => {
this.lgout();
}
}
]
});
prompt.present();
}
I updated to the latest version @ionic/app-scripts 3.3.0 and this is also happening in my app.
Пожалуйста, попробуйте ниже, который работал для меня
import { App } from 'ionic-angular';
export class PopoverPage {
constructor(public navCtrl: NavController
, public viewCtrl: ViewController
, public appCtrl: App) {
this.viewCtrl.dismiss().then(()=>{
setTimeout(()=>{
confirm.dismiss().then(()=>{
this.appCtrl.getRootNav().setRoot('DashboardPage');
})
},300)
})
}
}
Он говорит, что вы вызывали load.dismiss() до завершения load.presenet(). тебе стоит попробовать
let a = this.loadingCtrl.create({content : 'hello world'})
await a.present();
..
.. // your code goes here..
...
a.dismiss()
Вот мое простейшее решение этой проблемы:
У меня есть эти проблемы при реализации LoadingController
Примечание: не инициализируйте загрузчик внутри конструкции (он работает только в первый раз, и со второго раза вы застрянете с проблемой удаления просмотра не найден)
loading:any;
this.loading=this.loadingCtrl.create({
spinner:'bubbles',
content:`Please wait..`
});
Я отображал загрузчик при получении данных с сервера. Ниже приведен рабочий код.
gosignup(number:string){
this.loading.present();//showing the loader
//calling webservice
this.Authprovider.smsverify(number).subscribe(
data=>{
this.loading.dismiss();//to dismiss loader
if(data.json().msg=="success"){
this.navCtrl.push(SignupPage,{
user:this.Usersignup
})
}
if(data.json().msg=="error"){
this.showToastWithCloseButton("Invalid otp");
}
},
err=>{
this.loading.dismiss();
this.showToast("Please try again later");
},
()=>{
this.loading.dismiss();//to dismiss loader
}
);
}
Надеюсь, что это решит так проблемы