Skip to content

Commit fbb0103

Browse files
authored
Merge pull request #70 from SoftStackFactory/35-register-validation
35 register validation
2 parents e159f4a + b00d130 commit fbb0103

3 files changed

Lines changed: 34 additions & 17 deletions

File tree

src/pages/register/register.html

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,6 @@
4747
<p class="invalid-text">Enter a valid name</p>
4848
</ion-item><br>
4949

50-
5150
<ion-item class="input" no-lines>
5251
<ion-input
5352
class="input"
@@ -61,33 +60,38 @@
6160
<p class="invalid-text">Enter a valid email</p>
6261
</ion-item><br>
6362

64-
63+
<div formGroupName="pass">
6564
<ion-item class="input" no-lines>
6665
<ion-input
6766
class="input"
6867
type="password"
6968
#pass
7069
placeholder="Password"
7170
formControlName='password'
72-
[class.invalid]="!validate.controls.password.valid && (validate.controls.password.dirty || submitAttempt)"></ion-input>
71+
[class.invalid]="!validate.controls.pass.controls.password.valid && (validate.controls.pass.controls.password.dirty || submitAttempt)"></ion-input>
7372
</ion-item>
74-
<ion-item class="input" no-lines *ngIf="!validate.controls.password.valid && (validate.controls.password.dirty || submitAttempt)">
73+
<ion-item class="input" no-lines *ngIf="!validate.controls.pass.controls.password.valid && (validate.controls.pass.controls.password.dirty || submitAttempt)">
7574
<p class="invalid-text">Enter a password between 6-30 characters using only letters and numbers</p>
7675
</ion-item><br>
7776

78-
7977
<ion-item class="input" no-lines>
8078
<ion-input
8179
class="input"
8280
type="password"
8381
#repass
8482
placeholder="Password Confirmation"
8583
formControlName='passwordCheck'
86-
[class.invalid]="!validate.controls.passwordCheck.valid && (validate.controls.passwordCheck.dirty || submitAttempt)"></ion-input>
84+
[class.invalid]="!validate.controls.pass.controls.passwordCheck.valid && (validate.controls.pass.controls.passwordCheck.dirty || submitAttempt)"></ion-input>
8785
</ion-item>
88-
<ion-item class="input" no-lines *ngIf="!validate.controls.passwordCheck.valid && (validate.controls.passwordCheck.dirty || submitAttempt)">
89-
<p class="invalid-text">Passwords do not match</p>
86+
<ion-item class="input" no-lines *ngIf="!validate.controls.pass.valid && (validate.controls.pass.controls.passwordCheck.dirty || submitAttempt)">
87+
<p class="invalid-text">Password does not match</p>
9088
</ion-item>
89+
<!--
90+
<div class="error" *ngIf="validate.get('pass.passwordCheck').dirty && validate.get('pass.passwordCheck').hasError('nomatch')">
91+
Email addresses must match
92+
</div>
93+
-->
94+
</div>
9195

9296
<button id="register-button"color="secondary" ion-button [disabled]="!validate.valid">REGISTER </button>
9397
</form>

src/pages/register/register.ts

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { Component } from '@angular/core';
22
import { NavController, NavParams } from 'ionic-angular';
3-
import { Validators, FormBuilder, FormGroup, FormControl } from '@angular/forms';
3+
import { Validators, FormBuilder, FormGroup} from '@angular/forms';
44
import { PasswordValidator } from '../../validators/password.validator';
55

66

@@ -13,15 +13,16 @@ export class RegisterPage {
1313
private validate: FormGroup
1414
submitAttempt: boolean = false;
1515

16-
constructor(public navCtrl: NavController, public navParams: NavParams, private fb: FormBuilder) {
17-
18-
this.validate = this.fb.group({
16+
constructor(public navCtrl: NavController, public navParams: NavParams, private formbuilder: FormBuilder) {
17+
18+
this.validate = this.formbuilder.group({
1919
first: ['', Validators.compose([Validators.maxLength(30), Validators.pattern('[a-zA-Z ]*'), Validators.required])],
2020
last: ['', Validators.compose([Validators.maxLength(30), Validators.pattern('[a-zA-Z ]*'), Validators.required])],
21-
email: ['', Validators.compose([Validators.required,
22-
Validators.pattern('^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+.[a-zA-Z0-9-.]+$')])],
23-
password: ['', Validators.compose([Validators.minLength(6), Validators.maxLength(30), Validators.pattern('[a-zA-Z0-9 ]*'), Validators.required])],
24-
passwordCheck: ['', Validators.required]
21+
email: ['', Validators.compose([Validators.required, Validators.pattern('^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+.[a-zA-Z0-9-.]+$')])],
22+
pass: this.formbuilder.group({
23+
password: ['', Validators.compose([Validators.minLength(6), Validators.maxLength(30), Validators.pattern('[a-zA-Z0-9 ]*'), Validators.required])],
24+
passwordCheck: ['', Validators.required]
25+
}, {validator: PasswordValidator})
2526
})
2627

2728
}

src/validators/password.validator.ts

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,14 @@
1+
import { AbstractControl } from '@angular/forms'
2+
3+
export const PasswordValidator = (control: AbstractControl): {[key: string]: boolean} => {
4+
const password = control.get('password');
5+
const passwordCheck = control.get('passwordCheck');
6+
if (!password || !passwordCheck) {
7+
return null;
8+
}
9+
return password.value === passwordCheck.value ? null : { nomatch: true };
10+
};
11+
/*
112
import { FormControl, FormGroup } from '@angular/forms';
213
314
export class PasswordValidator {
@@ -29,4 +40,5 @@ export class PasswordValidator {
2940
areEqual: true
3041
};
3142
}
32-
}
43+
}
44+
*/

0 commit comments

Comments
 (0)