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é

21
demandé sur Samir Boulos 2017-05-07 09:06:30

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!

33
répondu RajeshKdev 2018-03-21 05:35:39

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;
    }
}
35
répondu Manoj Negi 2017-07-14 08:07:18

j'ai réussi à le résoudre en supprimant le contrôleur de chargement de mon composant.

1
répondu Samir Boulos 2017-05-07 08:18:25

j'ai enlevé le chargement.rejeter la fonction et résolu.

0
répondu chii 2017-05-11 02:42:24

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()
0
répondu Omer s 2017-08-12 18:08:29

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();
}
0
répondu Kevin Ripley 2017-12-06 04:13:02

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.

0
répondu jeudyx 2018-03-29 16:24:12

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

0
répondu Suraj Bahadur 2018-04-02 04:45:48

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)
        })
    }
 }
0
répondu puneet 2018-05-10 17:44:02