Создание наблюдаемого из объекта - PullRequest
0 голосов
/ 23 февраля 2019

Как я могу создать Observable из этого объекта?

this.localStorage.getItem('user').subscribe((user) => {
      if (user != null) {
        console.log(user);
        console.log('User existiert!');

        // Create Observable
        this.data = new Observable((observer: any) => {
          observer.next(user);
          observer.complete();
        });

        return this.data;

      }
    });

Пользовательский объект выглядит так:

enter image description here

Я написал это в сервис, но подписка на компоненты не работает.В чем проблема?

1 Ответ

0 голосов
/ 23 февраля 2019

Вам необходимо вернуть наблюдаемое в вашем сервисном методе и заставить компоненты вызывать этот метод для получения наблюдаемого.

Также, как уже упоминал jonrsharpe, вам не нужно создавать другое наблюдаемое.Просто используйте оператор карты / касания, если вы хотите выполнить преобразования ваших данных, или используйте console.log.

import { map } from 'rxjs/operators';
import { LocalStorage } from '@ngx-pwa/local-storage@6';

class Service {

  constructor(private localStorage: LocalStorage) {}

  // this is the naive approach
  getUser() {
    return new Observable((observer) => {
      this.localStorage.getItem('user').subscribe((user) => {
        if (user != null) {
          console.log(user);
          console.log('User existiert!'); 
        }
        observer.next(user);
        observer.complete();
      });
    });
  }

  // this is a better approach
  getUser() {
    return this.localStorage.getItem('user').pipe(
      map((user) => {
        if (user != null) {
          console.log(user);
          console.log('User existiert!');
        }
        return user
      }),
    );
  }
}
...