Подпишитесь на наблюдаемую ошибку при попытке вызвать сервисную функцию - PullRequest
0 голосов
/ 04 апреля 2020

В моем проекте Angular 8 у меня есть скрипт search.service.ts со следующими функциями:

export class SearchService {
  person;

  constructor(private http: HttpClient) { }

  getAll(): Observable<any> {
    // tslint:disable-next-line: max-line-length
    return this.http.get('https://gist.githubusercontent.com/glitchedmob/373e1ebf69d2c90cbf1a98322b0d77b7/raw/2ab6ab26f6dd9b763ff9fe725454ed7e4492f80d/breakingbadcharacters.json');
  }

  search(): Observable<any> {
    this.getAll().subscribe((users) => {
      console.log('TARGET USER: ');
      console.log(users[5]);
      this.person = users[5];
      return this.person;
    });
    console.log('TARGET: ' + this.person); // fires before getAll().subscribe printing 'undefined'
    return EMPTY;
  }
}

Функция getAll () работает и просто возвращает все данные из API. Функция search () - вот где у меня проблемы. Поскольку API не является службой REST, мне нужно получить все содержимое API, но снова вызвать getAll () и вернуть один элемент массива.

Обе функции используются в качестве ответов на нажатие кнопки и возвращаемых данных. печатается на экране. getAll () возвращает несколько записей, в то время как search (), как ожидается, вернет только одну.

Моя попытка вернуть отдельный элемент массива путем подписки на наблюдаемую запись getAll () не работает. Если я опускаю return EMPTY и пытаюсь вернуть данные из анонимной функции подписки, я получаю следующую ошибку:

ОШИБКА TypeError: Невозможно прочитать свойство 'subscribe' из неопределенного

...