在angulat服务中实现异步数据的Lazy属性。

问题描述 投票:0回答:1

我在寻找某种? 懒人财产 在Angular服务中,意思是--我想有一个getter到一个服务属性,并检查--如果成员是null,那么我就需要用一个observable获取数据并设置成员,然后返回它(在设置了值之后).这就是我现在的做法。

private _someDataItems : someDataItemType[];

get someDataItems() : someDataItemType[]
{
    if (!this._someDataItems)
    {
      this.getData().subscribe(result => //The get data return Observable<someDataItemType[]>
      {
        this._someDataItems = result;
        return this._someDataItems;
      });
    }
    else
    {
      return this._someDataItems;
    }
}

set someDataItems(value : someDataItemType[])
{
  this._someDataItems = value;
}

有什么方法可以做到这一点吗?

angular asynchronous rxjs angular-services subscription
1个回答
0
投票

也许你应该尝试返回一个 Observable.

private _someDataItems : someDataItemType[];

get someDataItems() : Observable<someDataItemType[]> {
    if (!this._someDataItems) {
      this.getData().pipe(map(result => //The get data return Observable<someDataItemType[]>
      {
        this._someDataItems = result;
        return this._someDataItems;
      }));
    }
    else
    {
      return of(this._someDataItems);
    }
}

set someDataItems(value : someDataItemType[])
{
  this._someDataItems = value;
}

© www.soinside.com 2019 - 2024. All rights reserved.