2016-12-03 1 views
1

У меня есть эта страница входа в систему, где я пытаюсь сохранить возвращенный объект данных (пользовательские данные) в хранилище, чтобы я мог его получить и использовать на других страницах ... так как данные в форме json Object (array) ... im не уверены, как это делается, я попытался подкрепить его, но что-то не так!Настройка и получение объекта из хранилища в Ionic 2

login.ts:

@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.loginDetails = loginDetails; 
       this.navCtrl.setRoot(TabsPage); 
       // console.log(loginDetails); 
      }); 

       this.userData.login(this.login.username); 
       this.userData.loginDetails(this.loginDetails); 

     } 
    } 
} 

когда я утешаю войти: //console.log(loginDetails); это результат (объект): [{"error": "false", "UserID": 1, "name": "yasir", "username": "yasir12", "password": "123", " role ": 1}]

поэтому я пытаюсь передать его: this.userData.loginDetails (this.loginDetails);

userData.ts:

@Injectable() 
    export class UserData { 
    constructor(public events: Events, public storage: Storage) {} 

     loginDetails(loginDetails) { 
      this.setLoginDetails(loginDetails); 
     }; 

    setLoginDetails(loginDetails) { 
     this.storage.set('loginDetails', JSON.stringify(loginDetails)); 
     }; 

    getLoginDetails() { 
     return this.storage.get('loginDetails').then((value) => { 
     return value && JSON.parse(value); 
     }); 
    }; 

это, как я пытаюсь получить на других страницах, которые, когда я утешаю журнал это вернуть «нулевой» или «неопределенный»

loginDetails: any; 

ngAfterViewInit() { 
    this.getUserdetails(); 
} 

getUserdetails() { 
    this.userData.getLoginDetails().then((loginDetails) => { 
    this.loginDetails = loginDetails; 
    console.log(this.loginDetails); 
    }); 
} 
может

кого-то пожалуйста помоги!

+0

же здесь также любое обновление для этой –

+0

я не знаю, им застрял тоже, даже в ионном 2 форуме никто не ответил –

ответ

2
if (form.valid) { 

      this.schoolAppUsers.login(this.login) 
     .then(loginDetails => { 

      this.loginDetails = loginDetails; 
      this.navCtrl.setRoot(TabsPage); 
      // console.log(loginDetails); 
     }); 

      this.userData.login(this.login.username); 
      this.userData.loginDetails(this.loginDetails); 

    } 

В этом проблема. ваше обещание.then() является асинхронным. вы пытаетесь сохранить loginDetails в userData еще до того, как он будет установлен в this.loginDetails. вы должны сделать:

this.userData.loginDetails(this.loginDetails); 

внутри затем метод авторизации.

UPDATE изменение

return value && JSON.parse(value); 

в

return value || JSON.parse(value); 
+0

я все еще получаю не определено –

+0

На самом деле на этот раз я получил [object Object], где приближаются. Думаю, –

+0

В getUserdetails() выведенный на экран объект [object Object] , но под ним console.log i get undefined –

Смежные вопросы