Ionique - Erreur: Uncaught (promesse): removeView n'a pas été trouvé
mon application ionique fonctionnait très bien et je n'ai rien fait mais soudainement j'ai cette erreur et je ne sais pas pourquoi.
"Erreur: Uncaught (promesse): removeView n'a pas été trouvé
9 réponses
lorsque vous voulez rejeter manuellement le chargement ionique, vous devrez peut-être suivre l'exemple ci-dessous. Ce qui fonctionne très bien, j'ai testé dans les labos ioniques.
Ionic 3+
Remarque: Si vous appelez cette.chargement.rejeter () manuellement, Je ne recommande pas d'utiliser le changement de nom de domaine, vous rejetez 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, donc nous ne peut pas appeler this.loading.dismiss()
manuellement lors de l' this.loading.present()
est toujours en cours d'exécution.
Donc, si nous devons rejeter manuellement, nous devons nous assurer que le chargement est présent et avoir une vue à la rejeter, nous devrions utiliser une autre méthode après present().then
comme le code suivant.
cependant je ne suis pas sûr pourquoi nous n'avions pas ce problème dans l'ancienne version de 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, n'a donc publié que des conseils utiles et pratiques et code.
j'espère que cela aide!
supprimer un composant est une solution à tout problème.
Cause de l'incident: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 déjà présent, crée alors une autre instance.
de même, en rejetant le chargeur, vérifiez si l'instance du chargeur ne existe, alors seulement le rejeter.
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 contrôleur de chargement de mon composant.
il est dit que vous l'avez appelé le chargement.renvoie () avant la charge.presenet() à la fin. vous devriez essayer
let a = this.loadingCtrl.create({content : 'hello world'})
await a.present();
..
.. // your code goes here..
...
a.dismiss()
En voici un pour l'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();
}
Pour moi, le problème était que je devais
dismissOnPageChange: true
quand j'ai créé le loadingCtrl.
L' .rejeter() a été appelé trop tôt après la .present () (lors des tests locaux, l'api réagit très rapidement) et il semble que ce paramètre ait causé le problème. Retirer résolu pour moi.
j'ai eu ce problème lors de la mise en oeuvre du LoadingController
Remarque: Ne pas initialiser le chargeur à l'intérieur de la construction (il ne fonctionne que la première fois et à partir de la deuxième fois vous serez coincé avec remove view not found problem)
loading:any;
this.loading=this.loadingCtrl.create({
spinner:'bubbles',
content:`Please wait..`
});
j'affichais le chargeur pendant que je récupérais les données du serveur Ci-dessous est 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 qu'il va résolvez donc les problèmes
s'il vous Plaît essayer de l'en-dessous de ce 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)
})
}
}