Как подписаться на нормальную функцию в качестве наблюдаемой в Angular - PullRequest
0 голосов
/ 10 июля 2019

У меня есть функция, которая возвращает объект.

           getUserState(): UserState {
              return this.userState;
           }

Я сохраняю приведенный выше результат функции в виде, наблюдаемом следующим образом:

       username$: Observable<UserState[]>;

       constructor(private userService:UserStateService) {}

       ngOnInit(): void {
            this.username$ = this.userService.getUserState().map(data => 
            {
              this.username$ = data;
            }) 
      }

Здесь я получаю сообщение об ошибке:

        Property 'map' does not exist on type 'UserState'.

Что я сделал не так?

Ответы [ 2 ]

0 голосов
/ 10 июля 2019

Сначала верните фактическую наблюдаемую:

getUserState(): Observable<UserState> {
  return of(this.userState);
}

Во-вторых, вам не нужна карта, может быть, вы можете использовать share или shareReplay

ngOnInit(): void {
  this.username$ = this.userService.getUserState().pipe(share());
}

В-третьих, я полагаю, вы используете ее где-то вшаблон

{{ username$ | async | json }}

и если не просто подписаться вот так

ngOnInit(): void {
  this.subscription = this.userService.getUserState().subscribe((state: UserState) => ...);
}
ngOndestroy(): void {
  this.subscription.unsubscribe(); // clean up after yourself
}
0 голосов
/ 10 июля 2019

попробуйте импортировать оператор 'map'.

import 'rxjs / add / operator / map'

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