簡體   English   中英

如何訂閱普通函數作為 Angular 中的 Observable

[英]How to subscribe to a normal function as an Observable in Angular

我有一個返回對象的函數。

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

我將上述函數結果存儲在一個 observable 中,如下所示:

       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'.

我做錯了什么?

首先返回一個實際的 observable:

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
}

嘗試導入“地圖”運算符。

導入'rxjs/add/operator/map'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM