2017-05-07 16 views
15

मेरा आयनिक ऐप ठीक काम कर रहा था और मैंने इसके लिए कुछ भी नहीं किया है लेकिन अचानक मुझे यह त्रुटि मिल रही है और मुझे नहीं पता कि क्यों।आयनिक - त्रुटि: अनकॉल्ड (वादे में): removeView नहीं मिला

"Error: Uncaught (in promise): removeView was not found

उत्तर

19

जब आप मैन्युअल रूप से आयनिक लोडिंग को खारिज करना चाहते हैं तो आपको नीचे दिए गए उदाहरण का पालन करना पड़ सकता है। जो ठीक काम कर रहा है मैंने आयनिक प्रयोगशालाओं में परीक्षण किया है।

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

Reference Link, इसलिए केवल उपयोगी और काम करने वाली युक्तियां और कोड पोस्ट किए गए।

मुझे आशा है कि इससे मदद मिलती है!

2

मैं अपने घटक से लोडिंग कंट्रोलर को हटाकर इसे हल करने में कामयाब रहा।

+0

आपने इसे कैसे हटाया? –

+1

यह एक उत्तर नहीं है। सही उत्तर ऊपर है। –

1

मैंने loading.dismiss फ़ंक्शन को हटा दिया और हल किया।

17

एक घटक को हटाने किसी भी समस्या का समाधान नहीं है।

समस्या का कारण:लोडिंग घटक की विधि को खारिज करने के लिए कई कॉल हैं।

समाधान: लोडर बनाते समय यदि लोडर उदाहरण पहले से ही मौजूद नहीं है की जाँच करें, उसके बाद ही एक और उदाहरण पैदा करते हैं।

इसी प्रकार, लोडर को खारिज करते समय, जांचें कि लोडर इंस्टेंस मौजूद है, केवल तभी इसे खारिज कर दें।

कोड:

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; 
    } 
} 
+0

ग्रेट .. यह काम कर रहा है –

+0

यह सही समाधान होना चाहिए! – Vasyl

-1

यह कहता है कि आप loading.dismiss करने के लिए() कहा जाता load.presenet से पहले() समाप्त हो गया। आप की कोशिश करनी चाहिए

let a = this.loadingCtrl.create({content : 'hello world'}) 
await a.present(); 
.. 
.. // your code goes here.. 
... 
a.dismiss() 
0

यहाँ 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(); 
} 
0
यहाँ

है इस समस्या का मेरा सबसे सरल समाधान: निर्माण अंदर लोडर को प्रारंभ न करें (यह काम करता है:

मैं जब 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();//this created the problem    
     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();//this saved my life 

} 

आशा है कि यह भी अपनी समस्याओं का समाधान होगा।

संबंधित मुद्दे