oh man… all day gone cuz of one zero
hi mr snikh
I get error EXCEPTION: Uncaught (in promise): TypeError: _this.globalService.set is not a function
onLogin(form) {
this.submitted = true;
if (form.valid) {
this.schoolAppUsers.login(this.login)
.then(loginDetails => {
this.globals.set('loginDetails', loginDetails); // save details for other pages
if (loginDetails.role === '1') {
return this.navCtrl.setRoot(AdminPage);
} else {
return this.navCtrl.setRoot(TeachersPage);
}
});
}
}
Show me, please:
- How you include GlobalsService in your page component.
- How you include GlobalsService in your module app.
login ts:
import { Component } from '@angular/core';
import { NavController } from 'ionic-angular';
import { SchoolAppUsers } from '../../providers/school-app-users';
import { UserData } from '../../providers/user-data';
import { GlobalService } from '../../providers/global-service';
import { TeachersPage } from '../teachers/teachers';
import { CoursesPage } from '../courses/courses';
import { StudentsPage } from '../students/students';
import { Storage } from '@ionic/storage';
@Component({
selector: 'page-login',
templateUrl: 'login.html'
})
export class LoginPage {
login: {username?: string , password?: string} = {};
submitted = false;
loginDetails: any;
constructor(public navCtrl: NavController, private schoolAppUsers: SchoolAppUsers,
public userData: UserData, public storage: Storage, public globalService: GlobalService ) {
this.globalService=globalService;
this.schoolAppUsers=schoolAppUsers;
this.userData=userData;
}
onLogin(form) {
this.submitted = true;
if (form.valid) {
this.schoolAppUsers.login(this.login)
.then(loginDetails => {
// this.globalService.set('loginDetails', loginDetails);
this.loginDetails = loginDetails;
if (loginDetails[0].role === 1) {
return this.navCtrl.setRoot(CoursesPage);
} else if (loginDetails[0].role === 2) {
return this.navCtrl.setRoot(StudentsPage);
} else {
return this.navCtrl.setRoot(TeachersPage);
}
});
this.userData.login(this.login.username);
this.userData.loginDetails(this.loginDetails);
}
}
}
module app:
import { NgModule } from '@angular/core';
import { IonicApp, IonicModule } from 'ionic-angular';
import { Storage } from '@ionic/storage';
import { MyApp } from './app.component';
import { StudentsPage } from '../pages/students/students';
import { TeachersPage } from '../pages/teachers/teachers';
import { UserDetailsPage } from '../pages/user-details/user-details';
import { LecturerDetailsPage } from '../pages/lecturer-details/lecturer-details';
import { CoursesPage } from '../pages/courses/courses';
import { LoginPage } from '../pages/login/login';
import { CourseDetailsPage } from '../pages/course-details/course-details';
import { HomePage } from '../pages/home/home';
import { SchoolAppUsers } from '../providers/school-app-users';
import { UserData } from '../providers/user-data';
import { GlobalService } from '../providers/global-service';
@NgModule({
declarations: [
MyApp,
StudentsPage,
TeachersPage,
UserDetailsPage,
LecturerDetailsPage,
CoursesPage,
CourseDetailsPage,
LoginPage,
HomePage
],
imports: [
IonicModule.forRoot(MyApp)
],
bootstrap: [IonicApp],
entryComponents: [
MyApp,
StudentsPage,
TeachersPage,
UserDetailsPage,
LecturerDetailsPage,
CoursesPage,
CourseDetailsPage,
LoginPage,
HomePage
],
providers: [SchoolAppUsers, UserData, Storage, GlobalService]
})
export class AppModule {}
I went your way but it didnt work out , then i decided if i just store it in a storage
this.loginDetails = loginDetails;
this.userData.loginDetails(this.loginDetails);
userData.ts:
import { Injectable } from '@angular/core';
import { Events } from 'ionic-angular';
import { Storage } from '@ionic/storage';
@Injectable()
export class UserData {
HAS_LOGGED_IN = 'hasLoggedIn';
constructor(public events: Events, public storage: Storage) {}
login(username) {
this.storage.set(this.HAS_LOGGED_IN, true);
this.setUsername(username);
this.events.publish('user:login');
};
setUsername(username) {
this.storage.set('username', username);
};
loginDetails(loginDetails) {
this.setLoginDetails(loginDetails);
};
setLoginDetails(loginDetails) {
this.storage.set('loginDetails', loginDetails);
};
getLoginDetails() {
return this.storage.get('loginDetails').then((value) => {
return value;
});
};
getUsername() {
return this.storage.get('username').then((value) => {
return value;
});
};
}
Your way with storage is better. If it work - use it.
hi mr snikh
can you check this plz
hi , m new to ionic and angular . m facing problem, ,actually i am trying to login from Api
its my component file
import { Component } from ‘@angular/core’;
import { NavController ,LoadingController,AlertController,ToastController ,NavParams} from ‘ionic-angular’;
import { HomePage1 } from ‘…/home1/home1’;
import { AuthService } from ‘…/…/providers/auth-service/auth-service’;
import { Constants } from ‘…/…/config/config’;
import { ILoginUser } from ‘…/…/interfaces/interfaces’;
import { Wrapper } from ‘…/…/providers/wrapper’;
import { Http , Headers} from ‘@angular/http’;
@Component({
selector: ‘page-home’,
templateUrl: ‘home.html’
})
export class HomePage {
role: string;
user_email: string;
user_passowrd :any;
loading: any;
data: any;
constructor(public navCtrl: NavController,public http: Http,public navParams: NavParams,private toastCtrl: ToastController, public authService: AuthService, public loadingCtrl: LoadingController,public alertCtrl: AlertController, public wrapper: Wrapper,) {
this.role = this.navParams.data.role;
}
presentAlert(error) {
let alert = this.alertCtrl.create({
title: ‘Error’,
message: error,
buttons: [‘Dismiss’]
});
alert.present();
}
doLogin()
{
this.http.get(‘http://turnkeyaccommodation.com.au/api/login_user’)
.map(res=> res.json())
.subscribe(data=>{
this.data = data.status;
this.data = Array.of(this.data);
console.log(data.status);
},
err=>{
console.log(err);
});
}
showLoader(){
this.loading = this.loadingCtrl.create({
content: ‘Authenticating…’
});
this.loading.present();
}
presentToast(msg) {
let toast = this.toastCtrl.create({
message: msg,
duration: 3000,
position: ‘bottom’,
dismissOnPageChange: true
});
toast.onDidDismiss(() => {
console.log('Dismissed toast');
});
toast.present();
}
//
guest()
{
this.navCtrl.setRoot(HomePage1);
}
logi()
{
this.navCtrl.setRoot(HomePage1);
}
}
HTML FILE
Welcome
to
TurnKey Accommodation
We strive for excellence in every aspect of your stay
<div class="row">
<div class="col-lg-12 bottom-btn text-center">
<a class="btn-bg" type="submit" (click)="doLogin()" >Login</a>
<a class="line-btn" (click)="guest()">Continue As a Guest</a>
</div>
</div>
plz help me for log in