Ionic v4 Firebase: cannot read property 'email' of undefined












0















This code has been bugging me for a good four hours... It's supposed to sign up a user with Firebase's auth system and Ionic 4 components.



Instead it returns the following around a good six times:




ERROR TypeError: Cannot read property 'email' of undefined




Another weird thing is that my code will only nitpick on the property 'email', and won't return errors for having a property 'password'.



signup.page.ts






import { Component, OnInit } from '@angular/core';
import { Router } from '@angular/router';

// firebase imports
import * as firebase from 'firebase';
import { AngularFireAuth } from '@angular/fire/auth';
import { ToastController } from '@ionic/angular';

// model import
import { User } from '../../models/login.interface';

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

constructor(
private afAuth: AngularFireAuth,
private route: Router,
public toast: ToastController
) { }

ngOnInit() {
}

async signup(user: User) {
console.log('starting auth');
try {
const result = await firebase.auth().createUserWithEmailAndPassword(user.email, user.password);
if (result) {
this.route.navigateByUrl('/add-profile');
}
} catch (e) {
console.log(e);
}
}

}





signup.page.html






<ion-header>
<ion-toolbar>
<ion-title>SIGNUP</ion-title>
</ion-toolbar>
</ion-header>

<ion-content padding>
<ion-item>
<ion-label position="stacked">Email</ion-label>
<ion-input type="text" [(ngModel)]="user.email"></ion-input>
</ion-item>
<ion-item>
<ion-label position="stacked">Password (6+ characters)</ion-label>
<ion-input type="password" [(ngModel)]="user.password"></ion-input>
</ion-item>
<ion-fab vertical="bottom" horizontal="end" slot="fixed">
<ion-fab-button (click)="signup(user)">SIGNUP
</ion-fab-button>
</ion-fab>
</ion-content>





user.interface.ts






export interface User {
email: string;
pasword: string;
}





Any help would be appreciated! Thank you!










share|improve this question





























    0















    This code has been bugging me for a good four hours... It's supposed to sign up a user with Firebase's auth system and Ionic 4 components.



    Instead it returns the following around a good six times:




    ERROR TypeError: Cannot read property 'email' of undefined




    Another weird thing is that my code will only nitpick on the property 'email', and won't return errors for having a property 'password'.



    signup.page.ts






    import { Component, OnInit } from '@angular/core';
    import { Router } from '@angular/router';

    // firebase imports
    import * as firebase from 'firebase';
    import { AngularFireAuth } from '@angular/fire/auth';
    import { ToastController } from '@ionic/angular';

    // model import
    import { User } from '../../models/login.interface';

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

    constructor(
    private afAuth: AngularFireAuth,
    private route: Router,
    public toast: ToastController
    ) { }

    ngOnInit() {
    }

    async signup(user: User) {
    console.log('starting auth');
    try {
    const result = await firebase.auth().createUserWithEmailAndPassword(user.email, user.password);
    if (result) {
    this.route.navigateByUrl('/add-profile');
    }
    } catch (e) {
    console.log(e);
    }
    }

    }





    signup.page.html






    <ion-header>
    <ion-toolbar>
    <ion-title>SIGNUP</ion-title>
    </ion-toolbar>
    </ion-header>

    <ion-content padding>
    <ion-item>
    <ion-label position="stacked">Email</ion-label>
    <ion-input type="text" [(ngModel)]="user.email"></ion-input>
    </ion-item>
    <ion-item>
    <ion-label position="stacked">Password (6+ characters)</ion-label>
    <ion-input type="password" [(ngModel)]="user.password"></ion-input>
    </ion-item>
    <ion-fab vertical="bottom" horizontal="end" slot="fixed">
    <ion-fab-button (click)="signup(user)">SIGNUP
    </ion-fab-button>
    </ion-fab>
    </ion-content>





    user.interface.ts






    export interface User {
    email: string;
    pasword: string;
    }





    Any help would be appreciated! Thank you!










    share|improve this question



























      0












      0








      0








      This code has been bugging me for a good four hours... It's supposed to sign up a user with Firebase's auth system and Ionic 4 components.



      Instead it returns the following around a good six times:




      ERROR TypeError: Cannot read property 'email' of undefined




      Another weird thing is that my code will only nitpick on the property 'email', and won't return errors for having a property 'password'.



      signup.page.ts






      import { Component, OnInit } from '@angular/core';
      import { Router } from '@angular/router';

      // firebase imports
      import * as firebase from 'firebase';
      import { AngularFireAuth } from '@angular/fire/auth';
      import { ToastController } from '@ionic/angular';

      // model import
      import { User } from '../../models/login.interface';

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

      constructor(
      private afAuth: AngularFireAuth,
      private route: Router,
      public toast: ToastController
      ) { }

      ngOnInit() {
      }

      async signup(user: User) {
      console.log('starting auth');
      try {
      const result = await firebase.auth().createUserWithEmailAndPassword(user.email, user.password);
      if (result) {
      this.route.navigateByUrl('/add-profile');
      }
      } catch (e) {
      console.log(e);
      }
      }

      }





      signup.page.html






      <ion-header>
      <ion-toolbar>
      <ion-title>SIGNUP</ion-title>
      </ion-toolbar>
      </ion-header>

      <ion-content padding>
      <ion-item>
      <ion-label position="stacked">Email</ion-label>
      <ion-input type="text" [(ngModel)]="user.email"></ion-input>
      </ion-item>
      <ion-item>
      <ion-label position="stacked">Password (6+ characters)</ion-label>
      <ion-input type="password" [(ngModel)]="user.password"></ion-input>
      </ion-item>
      <ion-fab vertical="bottom" horizontal="end" slot="fixed">
      <ion-fab-button (click)="signup(user)">SIGNUP
      </ion-fab-button>
      </ion-fab>
      </ion-content>





      user.interface.ts






      export interface User {
      email: string;
      pasword: string;
      }





      Any help would be appreciated! Thank you!










      share|improve this question
















      This code has been bugging me for a good four hours... It's supposed to sign up a user with Firebase's auth system and Ionic 4 components.



      Instead it returns the following around a good six times:




      ERROR TypeError: Cannot read property 'email' of undefined




      Another weird thing is that my code will only nitpick on the property 'email', and won't return errors for having a property 'password'.



      signup.page.ts






      import { Component, OnInit } from '@angular/core';
      import { Router } from '@angular/router';

      // firebase imports
      import * as firebase from 'firebase';
      import { AngularFireAuth } from '@angular/fire/auth';
      import { ToastController } from '@ionic/angular';

      // model import
      import { User } from '../../models/login.interface';

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

      constructor(
      private afAuth: AngularFireAuth,
      private route: Router,
      public toast: ToastController
      ) { }

      ngOnInit() {
      }

      async signup(user: User) {
      console.log('starting auth');
      try {
      const result = await firebase.auth().createUserWithEmailAndPassword(user.email, user.password);
      if (result) {
      this.route.navigateByUrl('/add-profile');
      }
      } catch (e) {
      console.log(e);
      }
      }

      }





      signup.page.html






      <ion-header>
      <ion-toolbar>
      <ion-title>SIGNUP</ion-title>
      </ion-toolbar>
      </ion-header>

      <ion-content padding>
      <ion-item>
      <ion-label position="stacked">Email</ion-label>
      <ion-input type="text" [(ngModel)]="user.email"></ion-input>
      </ion-item>
      <ion-item>
      <ion-label position="stacked">Password (6+ characters)</ion-label>
      <ion-input type="password" [(ngModel)]="user.password"></ion-input>
      </ion-item>
      <ion-fab vertical="bottom" horizontal="end" slot="fixed">
      <ion-fab-button (click)="signup(user)">SIGNUP
      </ion-fab-button>
      </ion-fab>
      </ion-content>





      user.interface.ts






      export interface User {
      email: string;
      pasword: string;
      }





      Any help would be appreciated! Thank you!






      import { Component, OnInit } from '@angular/core';
      import { Router } from '@angular/router';

      // firebase imports
      import * as firebase from 'firebase';
      import { AngularFireAuth } from '@angular/fire/auth';
      import { ToastController } from '@ionic/angular';

      // model import
      import { User } from '../../models/login.interface';

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

      constructor(
      private afAuth: AngularFireAuth,
      private route: Router,
      public toast: ToastController
      ) { }

      ngOnInit() {
      }

      async signup(user: User) {
      console.log('starting auth');
      try {
      const result = await firebase.auth().createUserWithEmailAndPassword(user.email, user.password);
      if (result) {
      this.route.navigateByUrl('/add-profile');
      }
      } catch (e) {
      console.log(e);
      }
      }

      }





      import { Component, OnInit } from '@angular/core';
      import { Router } from '@angular/router';

      // firebase imports
      import * as firebase from 'firebase';
      import { AngularFireAuth } from '@angular/fire/auth';
      import { ToastController } from '@ionic/angular';

      // model import
      import { User } from '../../models/login.interface';

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

      constructor(
      private afAuth: AngularFireAuth,
      private route: Router,
      public toast: ToastController
      ) { }

      ngOnInit() {
      }

      async signup(user: User) {
      console.log('starting auth');
      try {
      const result = await firebase.auth().createUserWithEmailAndPassword(user.email, user.password);
      if (result) {
      this.route.navigateByUrl('/add-profile');
      }
      } catch (e) {
      console.log(e);
      }
      }

      }





      <ion-header>
      <ion-toolbar>
      <ion-title>SIGNUP</ion-title>
      </ion-toolbar>
      </ion-header>

      <ion-content padding>
      <ion-item>
      <ion-label position="stacked">Email</ion-label>
      <ion-input type="text" [(ngModel)]="user.email"></ion-input>
      </ion-item>
      <ion-item>
      <ion-label position="stacked">Password (6+ characters)</ion-label>
      <ion-input type="password" [(ngModel)]="user.password"></ion-input>
      </ion-item>
      <ion-fab vertical="bottom" horizontal="end" slot="fixed">
      <ion-fab-button (click)="signup(user)">SIGNUP
      </ion-fab-button>
      </ion-fab>
      </ion-content>





      <ion-header>
      <ion-toolbar>
      <ion-title>SIGNUP</ion-title>
      </ion-toolbar>
      </ion-header>

      <ion-content padding>
      <ion-item>
      <ion-label position="stacked">Email</ion-label>
      <ion-input type="text" [(ngModel)]="user.email"></ion-input>
      </ion-item>
      <ion-item>
      <ion-label position="stacked">Password (6+ characters)</ion-label>
      <ion-input type="password" [(ngModel)]="user.password"></ion-input>
      </ion-item>
      <ion-fab vertical="bottom" horizontal="end" slot="fixed">
      <ion-fab-button (click)="signup(user)">SIGNUP
      </ion-fab-button>
      </ion-fab>
      </ion-content>





      export interface User {
      email: string;
      pasword: string;
      }





      export interface User {
      email: string;
      pasword: string;
      }






      html angular typescript ionic-framework ionic4






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Jan 1 at 7:19







      caroline

















      asked Jan 1 at 6:32









      carolinecaroline

      709




      709
























          2 Answers
          2






          active

          oldest

          votes


















          0














          Create a user and initialize it with empty values either in constructor or ngOnInit like below



          user:User;



          //inside constructor or ngOnInit
          this.user = {
          email: '',
          pasword: ''
          }






          share|improve this answer































            0














            // firebase imports
            import * as firebase from 'firebase';
            import { AngularFireAuth } from '@angular/fire/auth';
            import { ToastController } from '@ionic/angular';

            // model import
            import { User } from '../../models/login.interface';

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

            user: User = {
            email: '',
            password: ''
            }
            constructor(
            private afAuth: AngularFireAuth,
            private route: Router,
            public toast: ToastController
            ) { }

            ngOnInit() {
            }

            async signup(user: User) {
            console.log('starting auth');
            try {
            const result = await firebase.auth().createUserWithEmailAndPassword(user.email, user.password);
            if (result) {
            this.route.navigateByUrl('/add-profile');
            }
            } catch (e) {
            console.log(e);
            }
            }

            }





            share|improve this answer























              Your Answer






              StackExchange.ifUsing("editor", function () {
              StackExchange.using("externalEditor", function () {
              StackExchange.using("snippets", function () {
              StackExchange.snippets.init();
              });
              });
              }, "code-snippets");

              StackExchange.ready(function() {
              var channelOptions = {
              tags: "".split(" "),
              id: "1"
              };
              initTagRenderer("".split(" "), "".split(" "), channelOptions);

              StackExchange.using("externalEditor", function() {
              // Have to fire editor after snippets, if snippets enabled
              if (StackExchange.settings.snippets.snippetsEnabled) {
              StackExchange.using("snippets", function() {
              createEditor();
              });
              }
              else {
              createEditor();
              }
              });

              function createEditor() {
              StackExchange.prepareEditor({
              heartbeatType: 'answer',
              autoActivateHeartbeat: false,
              convertImagesToLinks: true,
              noModals: true,
              showLowRepImageUploadWarning: true,
              reputationToPostImages: 10,
              bindNavPrevention: true,
              postfix: "",
              imageUploader: {
              brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
              contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
              allowUrls: true
              },
              onDemand: true,
              discardSelector: ".discard-answer"
              ,immediatelyShowMarkdownHelp:true
              });


              }
              });














              draft saved

              draft discarded


















              StackExchange.ready(
              function () {
              StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53993482%2fionic-v4-firebase-cannot-read-property-email-of-undefined%23new-answer', 'question_page');
              }
              );

              Post as a guest















              Required, but never shown

























              2 Answers
              2






              active

              oldest

              votes








              2 Answers
              2






              active

              oldest

              votes









              active

              oldest

              votes






              active

              oldest

              votes









              0














              Create a user and initialize it with empty values either in constructor or ngOnInit like below



              user:User;



              //inside constructor or ngOnInit
              this.user = {
              email: '',
              pasword: ''
              }






              share|improve this answer




























                0














                Create a user and initialize it with empty values either in constructor or ngOnInit like below



                user:User;



                //inside constructor or ngOnInit
                this.user = {
                email: '',
                pasword: ''
                }






                share|improve this answer


























                  0












                  0








                  0







                  Create a user and initialize it with empty values either in constructor or ngOnInit like below



                  user:User;



                  //inside constructor or ngOnInit
                  this.user = {
                  email: '',
                  pasword: ''
                  }






                  share|improve this answer













                  Create a user and initialize it with empty values either in constructor or ngOnInit like below



                  user:User;



                  //inside constructor or ngOnInit
                  this.user = {
                  email: '',
                  pasword: ''
                  }







                  share|improve this answer












                  share|improve this answer



                  share|improve this answer










                  answered Jan 1 at 6:45









                  Ajay BarokarAjay Barokar

                  762




                  762

























                      0














                      // firebase imports
                      import * as firebase from 'firebase';
                      import { AngularFireAuth } from '@angular/fire/auth';
                      import { ToastController } from '@ionic/angular';

                      // model import
                      import { User } from '../../models/login.interface';

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

                      user: User = {
                      email: '',
                      password: ''
                      }
                      constructor(
                      private afAuth: AngularFireAuth,
                      private route: Router,
                      public toast: ToastController
                      ) { }

                      ngOnInit() {
                      }

                      async signup(user: User) {
                      console.log('starting auth');
                      try {
                      const result = await firebase.auth().createUserWithEmailAndPassword(user.email, user.password);
                      if (result) {
                      this.route.navigateByUrl('/add-profile');
                      }
                      } catch (e) {
                      console.log(e);
                      }
                      }

                      }





                      share|improve this answer




























                        0














                        // firebase imports
                        import * as firebase from 'firebase';
                        import { AngularFireAuth } from '@angular/fire/auth';
                        import { ToastController } from '@ionic/angular';

                        // model import
                        import { User } from '../../models/login.interface';

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

                        user: User = {
                        email: '',
                        password: ''
                        }
                        constructor(
                        private afAuth: AngularFireAuth,
                        private route: Router,
                        public toast: ToastController
                        ) { }

                        ngOnInit() {
                        }

                        async signup(user: User) {
                        console.log('starting auth');
                        try {
                        const result = await firebase.auth().createUserWithEmailAndPassword(user.email, user.password);
                        if (result) {
                        this.route.navigateByUrl('/add-profile');
                        }
                        } catch (e) {
                        console.log(e);
                        }
                        }

                        }





                        share|improve this answer


























                          0












                          0








                          0







                          // firebase imports
                          import * as firebase from 'firebase';
                          import { AngularFireAuth } from '@angular/fire/auth';
                          import { ToastController } from '@ionic/angular';

                          // model import
                          import { User } from '../../models/login.interface';

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

                          user: User = {
                          email: '',
                          password: ''
                          }
                          constructor(
                          private afAuth: AngularFireAuth,
                          private route: Router,
                          public toast: ToastController
                          ) { }

                          ngOnInit() {
                          }

                          async signup(user: User) {
                          console.log('starting auth');
                          try {
                          const result = await firebase.auth().createUserWithEmailAndPassword(user.email, user.password);
                          if (result) {
                          this.route.navigateByUrl('/add-profile');
                          }
                          } catch (e) {
                          console.log(e);
                          }
                          }

                          }





                          share|improve this answer













                          // firebase imports
                          import * as firebase from 'firebase';
                          import { AngularFireAuth } from '@angular/fire/auth';
                          import { ToastController } from '@ionic/angular';

                          // model import
                          import { User } from '../../models/login.interface';

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

                          user: User = {
                          email: '',
                          password: ''
                          }
                          constructor(
                          private afAuth: AngularFireAuth,
                          private route: Router,
                          public toast: ToastController
                          ) { }

                          ngOnInit() {
                          }

                          async signup(user: User) {
                          console.log('starting auth');
                          try {
                          const result = await firebase.auth().createUserWithEmailAndPassword(user.email, user.password);
                          if (result) {
                          this.route.navigateByUrl('/add-profile');
                          }
                          } catch (e) {
                          console.log(e);
                          }
                          }

                          }






                          share|improve this answer












                          share|improve this answer



                          share|improve this answer










                          answered Jan 2 at 5:15









                          yushinyushin

                          418314




                          418314






























                              draft saved

                              draft discarded




















































                              Thanks for contributing an answer to Stack Overflow!


                              • Please be sure to answer the question. Provide details and share your research!

                              But avoid



                              • Asking for help, clarification, or responding to other answers.

                              • Making statements based on opinion; back them up with references or personal experience.


                              To learn more, see our tips on writing great answers.




                              draft saved


                              draft discarded














                              StackExchange.ready(
                              function () {
                              StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53993482%2fionic-v4-firebase-cannot-read-property-email-of-undefined%23new-answer', 'question_page');
                              }
                              );

                              Post as a guest















                              Required, but never shown





















































                              Required, but never shown














                              Required, but never shown












                              Required, but never shown







                              Required, but never shown

































                              Required, but never shown














                              Required, but never shown












                              Required, but never shown







                              Required, but never shown







                              Popular posts from this blog

                              MongoDB - Not Authorized To Execute Command

                              How to fix TextFormField cause rebuild widget in Flutter

                              Npm cannot find a required file even through it is in the searched directory