-
#2 Ionic4(아이오닉4) Validation 체크Mobile (Hybrid)/Ionic4 2019. 4. 24. 00:38
로그인 화면 1. 필요한 모듈 import를 한다.
import {AlertController} from '@ionic/angular'; import { FormGroup, FormControl, FormBuilder, Validator, ReactiveFormsModule, Validators} from '@angular/forms'; import { Router } from '@angular/router';
2. constructor에 추가해준다.
constructor( public alertCtrl: AlertController, public formBuilder: FormBuilder, public reactiveFormsModule : ReactiveFormsModule, public router: Router ) {}
3. Html을 구성한다.
<ion-header> <ion-toolbar> <ion-title>로그인</ion-title> </ion-toolbar> </ion-header> <ion-content padding> <form [formGroup]="frm"> <ion-item> <ion-label position="floating"><font color="red">*</font> E-mail</ion-label> <ion-input formControlName="email" name="inputEmail" type="text"></ion-input> </ion-item> <div class="error-messages"> <ng-container *ngFor="let error of error_message.email"> <div class="error-message" *ngIf="frm.get('email').hasError(error.type) && (frm.get('email').dirty || frm.get('email').touched)"> {{ error.message }} </div> </ng-container> </div> <ion-item> <ion-label position="floating"><font color="red">*</font> Password</ion-label> <ion-input formControlName="password" name="inputPW" type="password"></ion-input> </ion-item> <div class="error-messages"> <ng-container *ngFor="let error of error_message.password"> <div class="error-message" *ngIf="frm.get('password').hasError(error.type) && (frm.get('password').dirty || frm.get('password').touched)"> {{ error.message }} </div> </ng-container> </div> <ion-button (click)="submit()" [disabled]=!frm.valid shape="round" size="default" color="primary" expand="block">Login</ion-button> </form> <div text-center> <p style="font-size: 0.5em; color: rgb(1, 120, 255)">Copyright ⓒ test. All rights reserved.</p> </div> </ion-content>
<form[formGroup]="frm"= formgroup name 설정
formControlName = input name 지정
button (click)="메소드명()" = Javascript onclick()과 비슷
[disabled]=!frm.valid = invalid일 경우 button disabled
Validation 조건문 대입
frm : FormGroup; //FormGroup 변수 constructor( public alertCtrl: AlertController, public formBuilder: FormBuilder, public reactiveFormsModule : ReactiveFormsModule, public router: Router ) { this.frm = this.formBuilder.group({ email: new FormControl('',Validators.compose([ Validators.required, Validators.minLength(6), Validators.maxLength(30), Validators.pattern('^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+.[a-zA-Z0-9-.]+$') ])), password: new FormControl('', Validators.compose([ Validators.required, Validators.minLength(6), Validators.maxLength(50), Validators.pattern('^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])[a-zA-Z0-9]+$') ])) }); }
ErrorMessage 설정
error_message = { 'email': [ { type: 'required', message: '이메일 주소를 적어주세요.' }, { type: 'minlength', message: '최소 6자 이상 입력해주세요.' }, { type: 'maxlength', message: '최대 30자 미만 입력해주세요.' }, { type: 'pattern', message: '올바르지 않은 이메일입니다.' } ], 'password': [ { type: 'required', message: '비밀번호를 입력해주세요.' }, { type: 'minlength', message: '최소 6자 이상 입력해주세요.' }, { type: 'maxlength', message: '최대 30자 미만 입력해주세요.' }, { type: 'pattern', message: '올바르지 않은 비밀번호입니다.' } ], }
버튼 클릭시 페이지이동 및 Alert 생성
submit(){ this.router.navigateByUrl('/map'); this.presentAlert(); } async presentAlert() { const alert = await this.alertCtrl.create({ header: 'Success', message: 'Welcome :)', buttons: ['OK'] }); return await alert.present(); }
'Mobile (Hybrid) > Ionic4' 카테고리의 다른 글
#5 Ionic4(아이오닉4) http get 방식 (0) 2019.05.08 #4 Ionic4(아이오닉4) GoogleMap 주소검색 (0) 2019.05.08 #3 Ionic4(아이오닉4) GoogleMap 적용 (0) 2019.04.25 #1 Ionic4(아이오닉4) 개발환경 (0) 2019.04.24