File

src/app/autenticacion/registro/registro.page.ts

Implements

OnInit

Metadata

selector app-registro
styleUrls ./registro.page.scss
templateUrl ./registro.page.html

Index

Properties
Methods

Constructor

constructor(formBuilder: FormBuilder, authService: AutenticationService, router: Router, toastController: ToastController, translate: TranslateService, menuController: MenuController)
Parameters :
Name Type Optional Description
formBuilder FormBuilder No

Constructor del formulario

authService AutenticationService No

Servicio propio de autenticación de usuarios

router Router No

Navegación entre páginas

toastController ToastController No

Controlador de los toast

translate TranslateService No

Módulo de traducción

menuController MenuController No

Methods

changeLang
changeLang(e)

Encargado de cambiar el idioma

Parameters :
Name Optional Description
e No

Evento del cambio de posición del toogle

Returns : void
ionViewDidEnter
ionViewDidEnter()
Returns : void
ngOnInit
ngOnInit()

Inicializa el formulario de registro y pone los campos como obligatorios

Returns : void
onSubmit
onSubmit()

Se ejecuta cuando se valida el formulario. Rellena los datos del usuario llamando al método saveUserdata(). Llama al servicio de autenticación y en caso de éxito llama al método presentToast() con un mensaje de éxito y redirige a la página de inicio de sesión. En caso de error llama al método presentToast() con mensaje de error dependiendo del error devuelto del servicio.

Returns : void
Async presentToast
presentToast(mensaje)

Método asíncrono que muestra un toast

Parameters :
Name Optional Description
mensaje No

Mensaje que aparecerá en el toast

Returns : any
saveUserdata
saveUserdata()

Devuelve los datos del usuario tras recogerlos del formulario.

Returns : { email: any; password: any; }

Properties

mensaje
Type : any
registroForm
Type : FormGroup
userdata
Type : any
import {Component, OnInit} from '@angular/core';
import {FormGroup, FormBuilder, Validators} from '@angular/forms';
import {AutenticationService} from '../../services/autentication.service';
import {Router} from '@angular/router';
import {MenuController, ToastController} from '@ionic/angular';
import {TranslateService} from '@ngx-translate/core';

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

    registroForm: FormGroup;
    userdata: any;

    mensaje: any;

    /**
     *
     * @param formBuilder Constructor del formulario
     * @param authService Servicio propio de autenticación de usuarios
     * @param router Navegación entre páginas
     * @param toastController Controlador de los toast
     * @param translate Módulo de traducción
     */
    constructor(private formBuilder: FormBuilder,
                private authService: AutenticationService,
                private router: Router,
                private toastController: ToastController,
                private translate: TranslateService,
                private menuController: MenuController) {
    }

    ionViewDidEnter() {
        this.menuController.enable(false);
    }

    /**
     * Inicializa el formulario de registro y pone los campos como obligatorios
     */
    ngOnInit() {
        this.registroForm = this.formBuilder.group({
            'email': ['', [
                Validators.required,
                Validators.email
            ]
            ],
            'password': ['', [
                Validators.required
            ]
            ]
        });
    }

    /**
     * Se ejecuta cuando se valida el formulario.
     * Rellena los datos del usuario llamando al método saveUserdata().
     * Llama al servicio de autenticación y en caso de éxito llama al método presentToast() con un
     * mensaje de éxito y redirige a la página de inicio de sesión.
     * En caso de error llama al método presentToast() con mensaje de error dependiendo del error devuelto
     * del servicio.
     */
    onSubmit() {
        this.userdata = this.saveUserdata();
        this.authService.registroUsuario(this.userdata)
            .then(() => {
                this.presentToast(this.translate.instant('createuser'));
                this.router.navigateByUrl('/inicio-sesion');
            })
            .catch(e => {
                console.log(e.message);
                if (e.message == 'The email address is badly formatted.') {
                    this.presentToast(this.translate.instant('badly'));
                }
                if (e.message == 'Password should be at least 6 characters') {
                    this.presentToast(this.translate.instant('password_err'));
                }
                if (e.message == 'The email address is already in use by another account.') {
                    this.presentToast(this.translate.instant('in_use'));
                }
            });
    }

    /**
     * Devuelve los datos del usuario tras recogerlos del formulario.
     */
    saveUserdata() {
        const saveUserdata = {
            email: this.registroForm.get('email').value,
            password: this.registroForm.get('password').value,
        };
        return saveUserdata;
    }

    /**
     * Método asíncrono que muestra un toast
     * @param mensaje Mensaje que aparecerá en el toast
     */
    async presentToast(mensaje) {
        const toast = await this.toastController.create({
            message: mensaje,
            duration: 3000
        });
        toast.present();
    }

    /**
     * Encargado de cambiar el idioma
     * @param e Evento del cambio de posición del toogle
     */
    changeLang(e) {
        // console.log(e.detail.checked);
        if (e.detail.checked) {
            this.translate.use('en');
        } else {
            this.translate.use('es');
        }
    }


}
<ion-header no-border style="border-bottom: green 1px solid">
    <ion-toolbar >
        <ion-title>
            <ion-img src="../../../assets/login.jpg"></ion-img>
            <h1 align="center">ShareAce</h1>
        </ion-title>
    </ion-toolbar>
</ion-header>

<ion-content padding>

    <form [formGroup]="registroForm" (ngSubmit)="onSubmit()">
        <ion-item>
            <ion-label>Email:</ion-label>
            <ion-input type="text" formControlName="email"></ion-input>
        </ion-item>
        <ion-item>
            <ion-label>{{'password'|translate}}:</ion-label>
            <ion-input type="password" formControlName="password"></ion-input>
        </ion-item>
        <ion-item float-right="">
            <ion-button shape="round" color="primary" fill="outline" type="submit">
                {{'sign_up'|translate}}
            </ion-button>
        </ion-item>
    </form>

    <ion-item><a href="/inicio-sesion">{{'return'|translate}}</a></ion-item>

    <ion-item>
        <ion-label style="font-size:0.95rem">{{"changeLang" | translate}}</ion-label>
        <ion-toggle slot="end" (ionChange)="changeLang($event)"></ion-toggle>
    </ion-item>

</ion-content>

./registro.page.scss

Legend
Html element
Component
Html element with directive

result-matching ""

    No results matching ""