Javascript 如何订阅一个正常的函数作为一个可观察的角度

Javascript 如何订阅一个正常的函数作为一个可观察的角度,javascript,angular,angular6,observable,mean-stack,Javascript,Angular,Angular6,Observable,Mean Stack,我有一个返回对象的函数 getUserState(): UserState { return this.userState; } 我将上述函数结果存储在一个可观察的文件中,如下所示: username$: Observable<UserState[]>; constructor(private userService:UserStateService) {} ngO

我有一个返回对象的函数

           getUserState(): UserState {
              return this.userState;
           }
我将上述函数结果存储在一个可观察的文件中,如下所示:

       username$: Observable<UserState[]>;

       constructor(private userService:UserStateService) {}

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

我做错了什么?

尝试导入“映射”操作符


导入'rxjs/add/operator/map'

首先返回一个实际的可观测值:

getUserState(): Observable<UserState> {
  return of(this.userState);
}
第三,我想您正在模板中的某个地方使用它

{{ username$ | async | json }}
如果不是像这样订阅的话

ngOnInit(): void {
  this.subscription = this.userService.getUserState().subscribe((state: UserState) => ...);
}
ngOndestroy(): void {
  this.subscription.unsubscribe(); // clean up after yourself
}

该函数返回一个UserState对象,该对象显然没有map属性。就这一点而言,RxJS 6中的可见光也不存在。您的ngOnInit没有任何意义,您是要将此.username$设置为外部值还是内部值?如果您只想创建单个值的可观察对象,那么它是of value.getUserState.pipemap…@Reactgular。同样,该方法不会返回observable@jonrsharpe如果你看函数的返回类型,你是对的,但老实说,在角度上不返回可观测值的服务是一种反模式,因此我假设OP在这里不仅仅犯了一个错误;
{{ username$ | async | json }}
ngOnInit(): void {
  this.subscription = this.userService.getUserState().subscribe((state: UserState) => ...);
}
ngOndestroy(): void {
  this.subscription.unsubscribe(); // clean up after yourself
}