I have create login page, page is working fine, but when I submit form it’s always giving false in .dirty and .valid so my data is not being submit… same validation was working fine in beta 10.
login.ts
import { Component } from '@angular/core';
import { NavController } from 'ionic-angular';
import { FormBuilder, Validators, ControlGroup } from '@angular/common';
import { SignupPage } from '../signup/signup';
import { TabsPage } from '../tabs/tabs';
import { UserData } from '../../providers/user-data';
import {DataService} from '../../providers/data-service';
import { ValidationService } from '../../validation';
@Component({
templateUrl: 'build/pages/login/login.html'
})
export class LoginPage {
login: {email?: string, password?: string} = {};
submitted = false;
loginForm: ControlGroup;
constructor(
public navCtrl: NavController,
public dataService: DataService,
builder: FormBuilder
) {
this.loginForm = builder.group({
email : ['', Validators.compose([Validators.required, ValidationService.emailValidator])],
password : ['', Validators.required]
});
}
onLogin(login) {
this.submitted = true;
if (this.loginForm.dirty && this.loginForm.valid) {
this.dataService.login(this.login.email,this.login.password);
this.navCtrl.push(TabsPage);
}
}
onSignup() {
this.navCtrl.push(SignupPage);
}
}
login.html
<form #loginForm="ngForm" (ngSubmit)="onLogin(loginForm.value)">
<ion-item>
<ion-label floating primary>Email</ion-label>
<ion-input [(ngModel)]="login.email" ngModel name="email" type="email" #email="ngModel" spellcheck="false" autocapitalize="off" required>
</ion-input>
</ion-item>
<p [hidden]="email.valid || email.emailFormat || submitted == false" danger padding-left>
Valid email address required
</p>
<ion-item>
<ion-label floating primary>Password</ion-label>
<ion-input [(ngModel)]="login.password" ngModel name="password" type="password" #password="ngModel" required>
</ion-input>
</ion-item>
<p [hidden]="password.valid || submitted == false" danger padding-left>
Password is required
</p>
<ion-row responsive-sm>
<ion-col>
<button type="submit" primary block>Login</button>
</ion-col>
<ion-col>
<button (click)="onSignup()" light block>Signup</button>
</ion-col>
</ion-row>
</form>
validation.ts
import {Component, Inject} from '@angular/core';
export class ValidationService {
static emailValidator(control) {
var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;
if (emailPattern.test(control.value)) {
return null;
} else {
return { 'invalidEmailAddress': true };
}
}
}