Proprietatea 'loading' nu există pe tipul 'SignupPage' (TypeScript)


Salut frumoșilor de la StackOverflow!

Sunt nou în stack-ul MEAN și încă încerc să înțeleg bazele acestuia.

Încerc să fac o autentificare simplă. Acesta este codul:

import { Component } from '@angular/core';
import { NavController, LoadingController } from 'ionic-angular';
import { Auth } from '../../providers/auth';
import { HomePage } from '../home/home';

@Component({
  selector: 'signup-page',
  templateUrl: 'signup-page.html'
})
export class SignupPage {

  role: string;
  email: string;
  password: string;

  constructor(public navCtrl: NavController, public authService: Auth, public loadingCtrl: LoadingController) {

  }

  register(){

    this.showLoader();

    let details = {
        email: this.email,
        password: this.password,
        role: this.role
    };

    this.authService.createAccount(details).then((result) => {
      this.loading.dismiss();
      console.log(result);
      this.navCtrl.setRoot(HomePage);
    }, (err) => {
        this.loading.dismiss();
    });

  }

  showLoader(){

    this.loading = this.loadingCtrl.create({
      content: 'Authenticating...'
    });

    this.loading.present();

  }

}

Și aceasta este eroarea pe care o primesc:

[12:43:17]  typescript: src/pages/signup-page/signup-page.ts, line: 31 
            Property 'loading' does not exist on type 'SignupPage'. 

      L30:  this.authService.createAccount(details).then((result) => {
      L31:    this.loading.dismiss();
      L32:    console.log(result);

[12:43:17]  typescript: src/pages/signup-page/signup-page.ts, line: 35 
            Property 'loading' does not exist on type 'SignupPage'. 

      L34:  }, (err) => {
      L35:      this.loading.dismiss();
      L36:  });

[12:43:17]  typescript: src/pages/signup-page/signup-page.ts, line: 42 
            Property 'loading' does not exist on type 'SignupPage'. 

      L42:  this.loading = this.loadingCtrl.create({
      L43:    content: 'Authenticating...'

[12:43:17]  typescript: src/pages/signup-page/signup-page.ts, line: 46 
            Property 'loading' does not exist on type 'SignupPage'. 

      L46:  this.loading.present();

[12:43:17]  transpile failed 

Cineva mă poate clarifica ce îmi lipsește și ce ar trebui să studiez pentru a continua cu proiectul meu?

Răspuns #1

Încearcă asta...

export class SignupPage {

  role: string;
  email: string;
  password: string;
  loading: any; 

  constructor(public navCtrl: NavController, public authService: Auth, public loadingCtrl: LoadingController) {

  }
....
}

Răspunsul #2

Problema este în metoda ta showLoader(). Tu faci:

this.loading = this.loadingCtrl.create({
  content: 'Authenticating...'
});

this.loading.present();

Acesta poate fi cod legal în JavaScript simplu, dar TypeScript se plânge pentru că nu ați definit o proprietate loading în clasa dvs. Pur și simplu definiți proprietatea astfel:

export class SignupPage {

  role: string;
  email: string;
  password: string;
  loading: LoadingController; //I'm assuming that's the correct type

  constructor(public navCtrl: NavController, public authService: Auth, public loadingCtrl: LoadingController) {

  }
....
}