Я работаю над приложением Ionic Ecommerce, и когда пользователь входит в систему, после этого я устанавливаю идентификатор пользователя в хранилище, и когда пользователь нажимает кнопку выхода, он удаляет хранилище, но не устанавливает для параметра значение Хранение.
Это мой loginpage.t s:
import { Component } from '@angular/core';
import { IonicPage, NavController, NavParams, AlertController, Events } from 'ionic-angular';
import { RestapiProvider } from '../../providers/restapi/restapi';
import { RegisterPage } from '../register/register';
import { CartPage } from './../cart/cart';
import {ForgetpasswordPage} from '../forgetpassword/forgetpassword';
import {Validators, FormBuilder, FormGroup } from '@angular/forms';
import { MyApp } from './../../app/app.component';
import { Storage } from '@ionic/storage';
@IonicPage()
@Component({
selector: 'page-loginpage',
templateUrl: 'loginpage.html',
})
export class LoginpagePage {
todo : FormGroup;
responseData : any;
userData = {"username": "", "password": ""};
user: any;
constructor(public navCtrl: NavController, public navParams: NavParams,
public restProvider: RestapiProvider, private formBuilder: FormBuilder, private alertCtrl: AlertController, public events: Events, private storage: Storage) {
this.todo = this.formBuilder.group({
username: ['', Validators.required],
password: ['', Validators.required],
});
}
createUser(user) {
this.events.publish('user:created', user);
}
ionViewDidLoad() {
console.log('ionViewDidLoad LoginpagePage');
}
getloginUsers(){
this.restProvider.getUsers(this.userData, 'user_Login').subscribe((data) => {
if (data) {
this.responseData = data;
this.user = this.responseData.msg.name;
this.storage.set("ID", this.responseData.msg.id); <!-- I am setting the User Id to the Storage -->
this.createUser(this.user);
if (this.responseData.status === 'success') {
this.navCtrl.push(MyApp);
}
else{
this.presentAlert();
}
}
});
}
presentAlert() {
let alert = this.alertCtrl.create({
title: 'Incorrect Username Or Password',
buttons: ['Dismiss']
});
alert.present();
}
}
Когда пользователь входит в систему, я устанавливаю идентификатор пользователя в хранилище.
Это мой app.component.ts :
import { LoginpagePage } from './../pages/loginpage/loginpage';
import { FrontPage } from './../pages/front/front';
import { Component, ViewChild } from '@angular/core';
import { Events, Nav, Platform } from 'ionic-angular';
import { StatusBar } from '@ionic-native/status-bar';
import { SplashScreen } from '@ionic-native/splash-screen';
import { ProductPage } from '../pages/product/product';
import { MyordersPage } from '../pages/myorders/myorders';
import { Storage } from '@ionic/storage';
@Component({
templateUrl: 'app.html'
})
export class MyApp {
@ViewChild(Nav) nav: Nav;
menuclick: boolean = true;
menuclick2: boolean = false;
rootPage: any = FrontPage;
uemail: string;
userName1: string;
pages: Array<{title: string, component: any, name2: string}>;
constructor(public platform: Platform, public statusBar: StatusBar, public splashScreen: SplashScreen, public events: Events, private storage: Storage) {
this.initializeApp();
this.pages = [
{ title: 'Home', component: FrontPage, name2: 'home' },
{ title: 'Product Categories', component: ProductPage, name2: 'basket' },
{ title: 'Merchandise', component: ProductPage, name2: 'man' },
{ title: 'My Orders', component: MyordersPage, name2: 'cart' },
];
this.events.subscribe('user:created', (data) => { // update from login
this.userName1 = data;
this.menuclick2 = true;
this.menuclick = false;
});
}
initializeApp() {
this.platform.ready().then(() => {
this.statusBar.styleDefault();
this.splashScreen.hide();
});
}
openPage(page) {
this.nav.setRoot(page.component);
}
loginpage2()
{
this.nav.push(LoginpagePage);
}
logoutClicked() {
console.log("Logout");
this.storage.remove("ID"); <!-- I am removing the set item from the Storage -->
this.nav.setRoot(FrontPage);
this.userName1 = null;
this.menuclick2 = false;
this.menuclick = true;
}
}
Когда я проверяю идентификатор пользователя в myorders.ts, он не возвращает никакого значения:
Это мой myorders.ts :
import { Component } from '@angular/core';
import { IonicPage, NavController, NavParams } from 'ionic-angular';
import { CartPage } from './../cart/cart';
import { Storage } from '@ionic/storage';
@IonicPage()
@Component({
selector: 'page-myorders',
templateUrl: 'myorders.html',
})
export class MyordersPage {
userhas: boolean = false;
usernot: boolean = true;
newuserid: any;
constructor(public navCtrl: NavController, public navParams: NavParams, private storage: Storage) {
}
ionViewDidLoad() {
console.log('ionViewDidLoad MyordersPage');
}
public GetUsername(){
if(this.storage.get("ID"))
{
this.userhas = true;
this.usernot = false;
this.newuserid = this.storage.get("ID");
}
}
cardpage2()
{
this.navCtrl.push(CartPage);
}
}
Это мой myorders.html :
<p>{{this.newuserid}}</p>
В этом app.component.ts у меня есть функция выхода из системы, при которой идентификатор пользователя удаляется из хранилища, но проблема в том, что я не могу установить и удалить элемент из хранилища. Любая помощь очень ценится.