No. This button is not inside . I have similar forms at other places where button is working fine. Here is the full HTML and TS code:
HTML:
<!--
Generated template for the Registerschool page.
See http://ionicframework.com/docs/v2/components/#navigation for more info on
Ionic pages and navigation.
-->
<ion-header>
<ion-navbar>
<button ion-button menuToggle>
<ion-icon name="menu"></ion-icon>
</button>
<ion-title>Register School</ion-title>
</ion-navbar>
</ion-header>
<ion-content padding>
<form [formGroup]="schoolregistrationForm">
<ion-list>
<ion-item>
<ion-label floating>Name</ion-label>
<ion-input type="text" [(ngModel)]="school.name" formControlName="name" [class.invalid]="!schoolregistrationForm.controls.name.valid && (schoolregistrationForm.controls.name.dirty|| submitAttempt)"></ion-input>
</ion-item>
<ion-item *ngIf="!schoolregistrationForm.controls.name.valid && (schoolregistrationForm.controls.name.dirty || submitAttempt)">
<p>Please enter a valid School Name.</p>
</ion-item>
<ion-item>
<ion-label floating>Address Line 1</ion-label>
<ion-input type="text" [(ngModel)]="school.addressLine1" formControlName="addressLine1" [class.invalid]="!schoolregistrationForm.controls.addressLine1.valid && (schoolregistrationForm.controls.addressLine1.dirty|| submitAttempt)"></ion-input>
</ion-item>
<ion-item *ngIf="!schoolregistrationForm.controls.addressLine1.valid && (schoolregistrationForm.controls.addressLine1.dirty || submitAttempt)">
<p>Please enter a valid Address.</p>
</ion-item>
<ion-item>
<ion-label floating>Address Line 2</ion-label>
<ion-input type="text" [(ngModel)]="school.addressLine2" formControlName="addressLine2" [class.invalid]="!schoolregistrationForm.controls.addressLine2.valid && (schoolregistrationForm.controls.addressLine2.dirty|| submitAttempt)"></ion-input>
</ion-item>
<ion-item *ngIf="!schoolregistrationForm.controls.addressLine2.valid && (schoolregistrationForm.controls.addressLine2.dirty || submitAttempt)">
<p>Please enter a valid Address.</p>
</ion-item>
<ion-item>
<ion-label floating>City</ion-label>
<ion-input type="text" [(ngModel)]="school.city" formControlName="city" [class.invalid]="!schoolregistrationForm.controls.city.valid && (schoolregistrationForm.controls.city.dirty|| submitAttempt)"></ion-input>
</ion-item>
<ion-item *ngIf="!schoolregistrationForm.controls.city.valid && (schoolregistrationForm.controls.city.dirty || submitAttempt)">
<p>Please enter a valid City Name.</p>
</ion-item>
<ion-item>
<ion-label floating>Zipcode</ion-label>
<ion-input type="text" [(ngModel)]="school.zipcode" formControlName="zipcode" [class.invalid]="!schoolregistrationForm.controls.zipcode.valid && (schoolregistrationForm.controls.zipcode.dirty|| submitAttempt)"></ion-input>
</ion-item>
<ion-item *ngIf="!schoolregistrationForm.controls.zipcode.valid && (schoolregistrationForm.controls.zipcode.dirty || submitAttempt)">
<p>Please enter a valid Zipcode.</p>
</ion-item>
<ion-item>
<ion-label floating>Email ID</ion-label>
<ion-input type="email" [(ngModel)]="school.email" formControlName="email" [class.invalid]="!schoolregistrationForm.controls.email.valid && (schoolregistrationForm.controls.email.dirty|| submitAttempt)"></ion-input>
</ion-item>
<ion-item *ngIf="!schoolregistrationForm.controls.email.valid && (schoolregistrationForm.controls.email.dirty || submitAttempt)">
<p>Please enter a valid Email ID.</p>
</ion-item>
<ion-item>
<ion-label floating>Contact Number</ion-label>
<ion-input type="number" [(ngModel)]="school.contact_no" formControlName="contact_no" [class.invalid]="!schoolregistrationForm.controls.contact_no.valid && (schoolregistrationForm.controls.contact_no.dirty|| submitAttempt)"></ion-input>
</ion-item>
<ion-item *ngIf="!schoolregistrationForm.controls.contact_no.valid && (schoolregistrationForm.controls.contact_no.dirty || submitAttempt)">
<p>Please enter a valid Contact Number.</p>
</ion-item>
<ion-item>
<ion-label floating>About School</ion-label>
<ion-input type="text" [(ngModel)]="school.about" formControlName="about" [class.invalid]="!schoolregistrationForm.controls.about.valid && (schoolregistrationForm.controls.about.dirty|| submitAttempt)"></ion-input>
</ion-item>
<ion-item *ngIf="!schoolregistrationForm.controls.about.valid && (schoolregistrationForm.controls.about.dirty || submitAttempt)">
<p>Please enter a valid text.</p>
</ion-item>
</ion-list>
</form>
<ion-row>
<ion-col width=50>
<button full ion-button (click)=cancel()>Cancel</button>
</ion-col>
<ion-col width=50>
<button full ion-button [disabled]="!schoolregistrationForm.valid" (click)="SaveSchoolDetails( school.id, school.name, school.addressLine1, school.addressLine2, school.city, school.zipcode, school.email, school.contact_no, school.about)"><span *ngIf="school.id">Update</span><span *ngIf="!school.id">Add</span></button>
</ion-col>
</ion-row>
</ion-content>
TS File:
import { Component } from '@angular/core';
import { NavController, NavParams } from 'ionic-angular';
import { AngularFire, FirebaseListObservable } from 'angularfire2';
import { SchoolPage } from '../../../pages/school/school/school';
import { UserData } from '../../../providers/user-data';
import { SchoolwelcomePage } from '../../../pages/school/schoolwelcome/schoolwelcome';
import { ClassListPage } from '../../../pages/class/class-list/class-list';
import { DefaultdashboardPage } from '../../../pages/defaultdashboard/defaultdashboard';
import { FormBuilder, FormGroup, Validators, ReactiveFormsModule } from '@angular/forms';
import { Geolocation } from '@ionic-native/geolocation';
/*
Generated class for the Registerschool page.
See http://ionicframework.com/docs/v2/components/#navigation for more info on
Ionic pages and navigation.
*/
@Component({
selector: 'page-registerschool',
templateUrl: 'registerschool.html'
})
export class RegisterschoolPage {
schooldetails: FirebaseListObservable<any[]>;
linkingdetails: FirebaseListObservable<any[]>;
roledetails: FirebaseListObservable<any[]>;
submitAttempt: boolean = false;
schoolregistrationForm: FormGroup;
role: any;
lat: any;
long: any;
school = {
id:'',
name:'',
addressLine1: '',
addressLine2: '',
city: '',
zipcode:'',
email:'',
contact_no: '',
about: ''
};
constructor(public navCtrl: NavController, public navParams: NavParams, public af: AngularFire, public userData: UserData, public formBuilder:FormBuilder, public geolocation: Geolocation) {
this.schooldetails = this.af.database.list('/schools');
this.linkingdetails = this.af.database.list('/linking');
this.school.id = this.navParams.get('key');
this.school.name = this.navParams.get('name');
this.school.addressLine1 = this.navParams.get('addressLine1');
this.school.addressLine2 = this.navParams.get('addressLine2');
this.school.city = this.navParams.get('city');
this.school.zipcode = this.navParams.get('zipcode');
this.school.email = this.navParams.get('email');
this.school.contact_no = this.navParams.get('contact_no');
console.log("About School==>"+this.school.contact_no);
this.school.about = this.navParams.get('about');
console.log("About School==>"+this.school.about);
this.schoolregistrationForm = formBuilder.group({
id: [''],
name:['', Validators.compose([Validators.maxLength(30), Validators.pattern('[a-zA-Z ]*'), Validators.required])],
addressLine1: ['' , Validators.compose([Validators.maxLength(30), Validators.pattern('[0-9a-zA-Z, ]*'), Validators.required])],
addressLine2: ['', Validators.compose([Validators.maxLength(30), Validators.pattern('[0-9a-zA-Z, ]*')])],
city: ['', Validators.compose([Validators.maxLength(30), Validators.pattern('[a-zA-Z ]*'), Validators.required])],
zipcode:['', Validators.compose([Validators.maxLength(30), Validators.pattern('[0-9]*'), Validators.required])],
email:['', Validators.compose([Validators.pattern('^[a-z0-9]+(\.[_a-z0-9]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,15})$'), Validators.required])],
contact_no: ['', Validators.compose([Validators.maxLength(30), Validators.pattern('[0-9]*'), Validators.required])],
about: ['', Validators.compose([Validators.maxLength(300), Validators.pattern('^[ A-Za-z0-9_@./#&+-=/$()]*'), Validators.required])]
})
this.geolocation.getCurrentPosition().then((resp) => {
this.lat = resp.coords.latitude;
this.long = resp.coords.longitude;
console.log("Lattitude==>" +this.lat);
console.log("Longitude==>" +this.long);
}).catch((error) => {
console.log('Error getting location', error);
});
}
SaveSchoolDetails( id, name, addressLine1, addressLine2, city, zipcode, email, contact_no, about) {
this.submitAttempt = true;
var newSchool = {
name: name,
addressLine1: addressLine1,
addressLine2: addressLine2,
city: city,
zipcode: zipcode,
email: email,
contact_no: contact_no,
lat: this.lat,
long: this.long,
about: about,
picture: "assets/img/school.png"
}
if(id) { this.schooldetails.update(id, newSchool).then( data => {
this.navCtrl.pop(this);
}, error => {
console.log(error);
});
}
else { this.schooldetails.push(newSchool).then( data => {
this.linkingdetails.push(
{
role: "admin",
schoolid: data.key,
emailid: (firebase.auth().currentUser.email),
uid: (firebase.auth().currentUser.uid)
});
this.userData.setUserRole().then( () => {
this.navCtrl.push(ClassListPage);
});
// .catch((error) => {
// this.navCtrl.setRoot(DefaultdashboardPage, {}, {animate: true, direction: 'forward'});
// });
}, error => {
console.log(error);
});
}
}
cancel(){
console.log("Cancel Clicked");
this.navCtrl.pop(ClassListPage);
}
}