реализовать свойство Lazy для asyn c данных в сервисе angulat - PullRequest
0 голосов
/ 06 мая 2020

Я ищу лучший способ иметь какое-то свойство Lazy в Angular службе, что означает - я хотел бы получить геттер для свойства службы и проверить - если member имеет значение null, тогда мне нужно будет получить данные с помощью наблюдаемого и установить член. а затем вернуть его (после того, как было установлено значение). Вот как я это сделал сейчас:

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;
}

Есть способ сделать это?

1 Ответ

0 голосов
/ 06 мая 2020

Возможно, вам стоит попробовать вернуть 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;
}

...