Как использовать наблюдаемые в качестве паба? - PullRequest
0 голосов
/ 09 октября 2019

Таким образом, у меня есть проблема, когда я хочу использовать localstorage для хранения имени пользователя после его входа в систему. Проблема в том, где я хочу отобразить это имя пользователя, на боковой панели, которая находится в appcomponent.ts

Итак, мне нужен способ обновить appcomponent после входа пользователя (Login.ts находится в другом файле). Я достиг этого, выполнив events.pub/sub, но скоро это станет устаревшим, поэтому я хочу знать, как я могу это сделать с помощью наблюдаемых или ж / д (извините, я все еще новичок в этом)

Как у меня это получилось:

LOGIN.PAGE.TS

   username: string;

   createUser() {
    this.username = localStorage.getItem('username');
    console.log('User created!')
    this.events.publish('user:created', this.username, Date.now());
  }

grabarLocalStorage() {
    console.log('username logeado: ', this.username);
    localStorage.setItem('username', this.username);
  }


 login() {
    this.usuarioLogin = {
      username: this.username,
      password: this.password,
    };
    this.grabarLocalStorage();
    this.createUser();

    this.loginService.postAuthUsuario(this.usuarioLogin)
    .subscribe((data => {  
        this.presentAlert();
        this.router.navigate(['/tabs/tab1']);
      })
}

APP.COMPONENT.TS (Где яу меня боковая панель)


 constructor(
   private platform: Platform,
   private splashScreen: SplashScreen,
   private statusBar: StatusBar,
   public events: Events
 ) {
   this.initializeApp();

   events.subscribe('user:created', (user, time) => {
     // user and time are the same arguments passed in `events.publish(user, time)`
     console.log('Welcome', user, 'at', time);
     this.username = user;
   });
 }


Способ, которым я сейчас пытаюсь, который не работает:

LOGIN.PAGE.TS

grabarLocalStorage() {
    console.log('username logeado: ', this.username);
    localStorage.setItem('username', this.username);
  }


 login() {
    this.usuarioLogin = {
      username: this.username,
      password: this.password,
    };
    this.grabarLocalStorage();

    this.loginService.postAuthUsuario(this.usuarioLogin)
    .subscribe((data => {  
        this.presentAlert();
        this.router.navigate(['/tabs/tab1']);
      })
}

LOGIN.SERVICE.TS


getUser(): Observable<any> {
   return new Observable(observer => {
     var username =  localStorage.getItem('username');
     console.log('observable creado');
     observer.next(username); // return username
   });
 }

APP.COMPONENT.TS


constructor(
   private platform: Platform,
   private splashScreen: SplashScreen,
   private statusBar: StatusBar,
   public events: Events,
   private loginService : LoginService
 ) {
   this.initializeApp();

   this.loginService.getUser().subscribe((resp)=>{
     this.username = resp;
     console.log(resp, 'respuesta en app component');
   })
 }

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...