Mon application ionique fonctionnait bien et je n'y ai rien fait, mais tout à coup, je reçois cette erreur et je ne sais pas pourquoi.
"Erreur: Non capturé (promis): removeView n'a pas été trouvé
Lorsque vous souhaitez supprimer manuellement le chargement ionique, vous devrez peut-être suivre l'exemple ci-dessous. Ce qui fonctionne bien, j'ai testé dans des laboratoires ioniques.
Ionic 3+
Note: Si vous appelez this.loading.dismiss () manuellement, je ne vous recommande pas d'utiliser la méthode ignoreOnPageChange, vous ignorez probablement le même chargement deux fois.
Pourquoi la solution ci-dessous fonctionne-t-elle?
Je pense que this.loading.present()
est une méthode asynchrone, nous ne pouvons donc pas appeler this.loading.dismiss()
manuellement lorsque this.loading.present()
est toujours en cours d'exécution.
Donc, si nous devons ignorer manuellement, nous devons nous assurer que le chargement est déjà présent et que nous voulons le faire disparaître, nous devrions utiliser une autre méthode après present().then
, comme le code suivant.
Cependant, je ne sais pas pourquoi nous n'avions pas ce problème dans l'ancienne version du framework (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
});
});
}
}
Lien de référence , ne publie donc que des astuces et du code utiles et utiles.
J'espère que ça aide!
La suppression d'un composant est pas une solution à tout problème.
Cause du problème: _ Il y a plusieurs appels à rejeter la méthode de chargement du composant.
Solution: Lors de la création du chargeur, vérifiez si l'instance du chargeur est pasdéjà présente, puis créez une autre instance.
De même, lors de la suppression du chargeur, vérifiez si l'instance du chargeur existe _, puis ne la fermez pas.
Code:
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;
}
}
J'ai réussi à le résoudre en supprimant le LoadingController de mon composant.
Pour moi, le problème était que j'avais
dismissOnPageChange: true
quand j'ai créé le loadingCtrl.
Le .dismiss () était appelé trop tôt après le .present () (lors du test local, l'API répond très vite) et il semble que ce paramètre soit à l'origine du problème. Le supprimer l'a résolu pour moi.
J'ai enlevé la fonction loading.dismiss et l'ai résolue.
il dit que vous avez appelé à loading.dismiss () avant que load.presenet () se termine. tu devrais essayer
let a = this.loadingCtrl.create({content : 'hello world'})
await a.present();
..
.. // your code goes here..
...
a.dismiss()
S'il vous plaît essayer le ci-dessous qui a fonctionné pour moi
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)
})
}
}
Voici ma solution la plus simple à ce problème:
J'ai eu ces problèmes lors de la mise en œuvre du LoadingController
Remarque: N'initialisez pas le chargeur dans la construction (cela ne fonctionne que la première fois et à partir de la deuxième fois, vous serez bloqué avec le problème remove view not found)
loading:any;
this.loading=this.loadingCtrl.create({
spinner:'bubbles',
content:`Please wait..`
});
J'affichais le chargeur tout en récupérant les données du serveur Ci-dessous le code de travail
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
}
);
}
J'espère que cela résoudra les problèmes SO
Voici un pour le alertController mais fonctionne très similaire.
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();
}