Ionic 2项目 - 认证承诺问题

时间:2017-04-28 19:10:59

标签: javascript angular ionic2

我一直在寻找我遇到的这个问题的解决方案,但是没有发现任何适用于我特定情况的东西。我正在研究Ionic 2应用程序,我正在为登录屏幕处理一些身份验证。这个文件的目的是为我写的前端代码添加后端功能(请参阅下面github链接上的我的login.html文件)。我正在关注本网站上的教程: https://devdactic.com/login-ionic-2/

我遇到的问题是,对于某些将在我的代码中标记的函数,我得到一个“从(函数)返回的Promise被忽略”,这会阻止代码完全运行。它不会出现编译错误,而是运行时错误:

运行时错误 未捕获(承诺):错误:没有Http的提供者! d

时出错

我真的不确定这意味着什么,所以任何见解都会非常有帮助。如果需要,我可以提供完整错误的图片。

@IonicPage()
@Component({
  selector: 'page-login',
  templateUrl: 'login.html',
})
export class LoginPage {
  loading: Loading;
  registerCredentials = { email: '', password: ''};

  constructor(public navCtrl: NavController, private auth: AuthService, public navParams: NavParams,
  private alertCtrl: AlertController, private loadingCtrl: LoadingController) {}

  public createAccount() {
    this.navCtrl.push('RegisterPage'); //Promise ignored error
  }

  public login() {
    this.showLoading();
    this.auth.login(this.registerCredentials).subscribe(allowed => {
        if (allowed) {
          this.navCtrl.setRoot('HomePage'); //Promise ignored error
        } else {
          this.showError("Access Denied");
        }
      },
      error => {
        this.showError(error);
      });
  }

  showLoading() {
    this.loading = this.loadingCtrl.create({
      content: 'Please wait...',
      dismissOnPageChange: true
    });
    this.loading.present(); //Promise ignored error
  }

  showError(text) {
    this.loading.dismiss(); //Promise ignored error

    let alert = this.alertCtrl.create({
      title: 'Fail',
      subTitle: text,
      buttons: ['OK']
    });
    alert.present(prompt); //Promise ignored error
  }
}

错误图片: enter image description here

我只是不确定是什么导致了这个问题,它导致我的代码完全崩溃,甚至无法加载我的UI。如果您需要查看其他一些文件,其余文件位于我的github上,此特定文件位于 / src / pages / login

其余文件: https://github.com/jparr721/Badmeat/tree/master/BadMeat-Ionic/FirstBuild/src

  • IDE:JetBrains WebStorm
  • OS:MacOS Sierra
  • 离子版:2.2.2

2 个答案:

答案 0 :(得分:0)

我不确定这是否可以解决您的问题,但请尝试将以下内容添加到您的app.module.ts文件中

import { HttpModule } from '@angular/http';

它可能会修复您的http提供程序错误 您还必须将其添加到同一文件中的导入

imports: [
    BrowserModule,
    HttpModule,
    CloudModule.forRoot(cloudSettings),
    IonicModule.forRoot(MyApp),
    IonicStorageModule.forRoot()
  ],

答案 1 :(得分:0)

您可能已经知道了,但尝试将代码中的public更改为private:

constructor(public navCtrl: NavController,

尝试:

constructor(private navCtrl: NavController,