【问题标题】:Ionic LoadingController dismiss is not working离子加载控制器关闭不起作用
【发布时间】:2019-12-08 22:25:43
【问题描述】:

我正在使用 ionic 5.0.0,我必须为我的登录屏幕实现加载。为此,我使用 LoadingController 完成了一些实现。但不幸的是,我收到了以下错误。请看一下。

ERROR TypeError: Cannot read property 'dismiss' of undefined
at LoginPage.push../src/app/login/login.page.ts.LoginPage.dismissLoader (login.page.ts:161)
at LoginPage.push../src/app/login/login.page.ts.LoginPage.doLogin (login.page.ts:103)
at Object.eval [as handleEvent] (LoginPage.html:8)
at handleEvent (core.js:23107)
at callWithDebugContext (core.js:24177)
at Object.debugHandleEvent [as handleEvent] (core.js:23904)
at dispatchEvent (core.js:20556)
at core.js:22046
at SafeSubscriber.schedulerFn [as _next] (core.js:13527)
at SafeSubscriber.push../node_modules/rxjs/_esm5/internal/Subscriber.js.SafeSubscriber.__tryOrUnsub (Subscriber.js:192)

当我调用 this.dismissLoader(); 时出现此错误,这是我的 login.page.ts

import { Component, OnInit } from '@angular/core';
import { LoadingController } from '@ionic/angular';

   @Component({
      selector: 'app-login',
      templateUrl: './login.page.html',
      styleUrls: ['./login.page.scss'],
    })
    export class LoginPage implements OnInit {

      loginFail: boolean = false;
      errorMessage: string = '';
      loading: any;

      constructor(
      private router : Router,
      private loadingController: LoadingController) { }

      ngOnInit() { 
        this.menu.enable(false);
      }

    doLogin(username:string, password:string){ 
        this.showLoader();   
        if(username==='admin' && password==='admin'){
              this.dismissLoader();
              this.router.navigate(['/home']);
        } else{
              this.loginFail = true;
              this.errorMessage = "Login failed";
              this.dismissLoader();
          }
    }
    async showLoader() {
       this.loading = await this.loadingController.create({
         message: 'Please wait...',
         spinner: 'crescent'
       });
     this.loading.present();
    }

    dismissLoader() {
      this.loading.dismiss();
    }

有人可以帮帮我吗?

【问题讨论】:

    标签: angular ionic-framework


    【解决方案1】:

    它在加载控制器

    this.loadingController.dismiss()
    

    refer similar question also

    【讨论】:

      【解决方案2】:

      试试这个:

      doLogin(username: string, password: string) {
      const loading = await this.loadingController.create({
          message: 'Please wait...',
          spinner: 'crescent'
        });
        loading.present().then(() => {
          if (username === 'admin' && password === 'admin') {
            loading.dismiss();
            this.router.navigate(['/home']);
          } else {
            this.loginFail = true;
            this.errorMessage = "Login failed";
            loading.dismiss();
          }
        }
      }
      

      【讨论】:

        【解决方案3】:
        
        @Component({
            selector: 'exapmle-component',
            templateUrl: './exapmle-component.html',
            styleUrls: ['./exapmle-component.scss']
        })
        export class ExampleComponent {
        
            public loading: HTMLIonLoadingElement;
        
            constructor(
                public loadingCtrl: LoadingController
            ) { }
        
            public async createLoading(): Promise<boolean> {
                if (this.loading) {
                    this.loading.dismiss();
                }
        
                const loadingOptions: LoadingOptions = {
                    animated: true,
                    backdropDismiss: false,
                    showBackdrop: true,
                    spinner: 'bubbles',
                    message: 'Hello'
                };
        
                this.loading = await this.loadingCtrl.create(loadingOptions);
                this.loading.present();
                return true;
            }
        
            public async dismissLoading(): Promise<void> {
                if (this.loading) {
                    this.loading.dismiss();
                }
            }
        
            public async submit(): Promise<void> {
                await this.createLoading();
        
                // Logic
        
                this.dismissLoading();
            }
        }
        

        【讨论】:

          猜你喜欢
          • 2017-09-18
          • 2017-05-18
          • 2016-05-26
          • 1970-01-01
          • 2016-12-29
          • 2016-01-12
          • 2015-01-02
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多