Ionic - Error: Uncaught (in promise): removeView was not found

前端 未结 11 753
天命终不由人
天命终不由人 2020-12-15 16:56

My Ionic app was working fine and I haven\'t done anything to it but suddenly I am getting this error and I don\'t know why.

\"Error: Uncaught (in pro

相关标签:
11条回答
  • 2020-12-15 17:51

    Here is my simplest solution to this problem:

    I have got this problems when implementing the LoadingController

    Note: Don't initialize loader inside the construction (it works only first time and from second time you will get stuck with remove view not found problem)

    loading:any;
    
    this.loading=this.loadingCtrl.create({
            spinner:'bubbles',
            content:`Please wait..`
          });
    

    I was displaying the loader while getting data from server Below is the working code

     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
          }
    
          );
    
    
    
      }
    

    Hope it will solve SO problems

    0 讨论(0)
  • 2020-12-15 17:53

    When you want to manually dismiss the Ionic loading you may need to follow the below example. Which is working fine I have tested in ionic labs.

    Ionic 3+
    

    Note: If you call this.loading.dismiss() manually, I don't recommend to use dismissOnPageChange, you are probably dismissing the same loading twice.

    Why the below solution works?

    I think this.loading.present() is an asynchronous method, so we can't call this.loading.dismiss() manually when this.loading.present() is still running.

    So if we need to dismiss manually we need to make sure that loading is present already and have a view to dismiss it, we should use other method after present().then like the following code.

    However I'm not sure why we didn't have this problem in the old framework version (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
                });
          });
       }
    }
    

    Reference Link,hence posted only useful and working tips and code.

    I hope this helps!

    0 讨论(0)
  • 2020-12-15 17:54

    I removed loading.dismiss function and solved it.

    0 讨论(0)
  • 2020-12-15 17:59

    Here is one for the alertController but works very similar.

    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 讨论(0)
  • 2020-12-15 18:00

    For me, the simple fix was changing:

    this.loader.dismiss()
    

    to:

    this.loader.dismiss().then(value => {
        console.log("dismiss worked!");
    }, reason => {
        console.log("dismiss rejected!");
    });
    
    0 讨论(0)
提交回复
热议问题