Hi all,
can some one help me for the below.
Ionic 2 version is : 2.0.0-rc.1
import { Component } from '@angular/core';
//import {DataServices} from '../../providers/dataservices';
import { NavController } from 'ionic-angular';
import {FormGroup, FormBuilder, Validators} from '@angular/forms';
@Component({
selector: 'page-signup',
templateUrl: 'signup.html',
})
export class SignupPage {
formdata = {
p_surname: '',
p_person_id: '',
p_email: '',
p_password: '',
p_confirm_password: ''
};
submitAttempt: boolean = false;
myForm: FormGroup;
constructor(public nav: NavController
, public formBuilder: FormBuilder
) {
this.myForm = this.formBuilder.group({
p_surname: ['', Validators.compose([Validators.maxLength(30),Validators.required])],
p_person_id: ['', Validators.compose([Validators.maxLength(10), Validators.required])],
p_email: ['', Validators.compose([Validators.required])],
//password_ctrl: this.formBuilder.group({
p_password: ['', Validators.compose([Validators.required])],
p_confirm_password: ['', Validators.compose([Validators.required])]
//}, this.matchPassword)
}, {'validator': this.isMatching});
}
ionViewDidEnter(){
}
isMatching(group: FormGroup){
console.log("password check");
var firstPassword = group.controls['p_password'].value;
var secondPassword = group.controls['p_confirm_password'].value;
if((firstPassword && secondPassword) && (firstPassword != secondPassword)){
console.log("mismatch");
return { "pw_mismatch": true };
} else{
return null;
}
}
matchPassword(group): any {
let password = group.controls.p_password;
let confirm = group.controls.p_confirm_password;
console.log("indise");
// Don't kick in until user touches both fields
if (password.pristine || confirm.pristine) {
console.log("sd");
return null;
}
// Mark group as touched so we can add invalid class easily
group.markAsTouched();
if (password.value === confirm.value) {
return null;
}
console.log("sdfdsf");
return {
isValid: false
};
}
register(){
this.submitAttempt = true;
if(!this.myForm.valid){
console.log("Not valid!");
}
else {
console.log("success!");
console.log(this.myForm.value);
console.log(this.formdata);
}
}
}
and template is below
<ion-header>
<ion-navbar secondary>
<ion-title>Create Account</ion-title>
</ion-navbar>
</ion-header>
<ion-content>
<ion-card>
<ion-card-header>
<ion-row>
<ion-col>
<h2>Personal Details</h2>
</ion-col>
</ion-row>
</ion-card-header>
<ion-card-content>
<form [formGroup]="myForm">
<ion-row>
<ion-col>
<ion-list inset>
<ion-item>
<ion-label>
<ion-icon name="person"></ion-icon>
</ion-label>
<ion-input placeholder="Surname" type="text" [(ngModel)]="formdata.p_surname" name="p_surname" formControlName="p_surname"></ion-input>
</ion-item>
<ion-item *ngIf="!myForm.controls.p_surname.valid && (submitAttempt)">
<p>Please enter a valid Surname.</p>
</ion-item>
<ion-item>
<ion-label>
<ion-icon name="person"></ion-icon>
</ion-label>
<ion-input placeholder="Membership No" type="text" [(ngModel)]="formdata.p_person_id" name="p_person_id" formControlName="p_person_id"></ion-input>
</ion-item>
<ion-item *ngIf="!myForm.controls.p_person_id.valid && (submitAttempt)">
<p>Please enter a valid Membership no.</p>
</ion-item>
<ion-item>
<ion-label>
<ion-icon name="mail"></ion-icon>
</ion-label>
<ion-input placeholder="Email" type="email" [(ngModel)]="formdata.p_email" name="p_email" formControlName="p_email"></ion-input>
</ion-item>
<ion-item *ngIf="!myForm.controls.p_email.valid && (submitAttempt)">
<p>Please enter a valid Email address.</p>
</ion-item>
<ion-item>
<ion-label>
<ion-icon name="lock"></ion-icon>
</ion-label>
<ion-input placeholder="Password" type="password" [(ngModel)]="formdata.p_password" name="p_password" formControlName="p_password"></ion-input>
</ion-item>
<ion-item>
<ion-label>
<ion-icon name="lock"></ion-icon>
</ion-label>
<ion-input placeholder="Confirm password" type="password" [(ngModel)]="formdata.p_confirm_password" name="p_confirm_password" formControlName="p_confirm_password"></ion-input>
</ion-item>
<!--
<ion-item *ngIf="!myForm.controls.password_ctrl.valid && (submitAttempt)">
<p>Please enter a valid password.</p>
</ion-item>
</div>
-->
<!--
<ion-item *ngIf="!myForm.controls.p_confirm_password.valid && (submitAttempt)">
<p>Please enter a valid Confirm Password.</p>
</ion-item>
-->
</ion-list>
<button ion-button color="primary"(click)="register()" full>Register</button>
</ion-col>
</ion-row>
</form>
</ion-card-content>
</ion-card>
</ion-content>
Can anyone let me know how to show the validation error that is thrown by isMatching validator, or is there any other method better than this?