субъект поведения и наблюдаемый в Angular8 - PullRequest
0 голосов
/ 15 апреля 2020

Я получил вызов данных службы отдыха, который вызывается 3 раза. Мне нужно создать службу данных, чтобы сократить вызов до одного раза, чтобы он сохранял локальную копию. Если копия еще не заполнена, он обращается к API, чтобы получить их. это следует сделать только один раз. Итак, нужен bool, который указывает на состояние вызова get. Если вы еще не сделали вызов для получения данных, переключите bool и получите данные. Я знаю, что это можно сделать, если компонент подпишется на наблюдаемые, и когда служба данных будет иметь данные, она предоставит их через BehaviorSubject. Но не знаю, как это реализовать, потому что я не работал с наблюдаемыми и поведением субъекта. Любое руководство по этому вопросу приветствуется. Спасибо.

Вот мой пример стекаблиц https://stackblitz.com/edit/angular-sqxp9e?file=src%2Fapp%2Fnotifications-data.service.ts

1 Ответ

0 голосов
/ 20 апреля 2020

Я создал службу данных, как показано ниже:

  private notificationsSubject = new BehaviorSubject<any>([]);
  private loaded = false;

  public notifications$ = this.notificationsSubject.asObservable();
  public data = [];


  constructor(private restSvc: RestService) { }

  getNotification$(): void {

    if (!this.loaded) {
      this.loaded = true;
      this.restSvc.getData("/api/app/getnotifs").subscribe((data: any) => {
        this.data = data;
        this.notificationsSubject.next(this.data);

      });
    }
    else {
      this.notificationsSubject.next(this.data);
    }
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...