Что вы, вероятно, хотите сделать, - это заполнить еще один Observable
данными, чтобы вы могли получить к ним доступ в другом месте вашего проекта без необходимости вызова API более одного раза.
Для этого вы создаете так называемый Subject
(в данном случае BehaviorSubject
) и можете заполнить его данными, когда ваш вызов API возвращает ответ.
Затем, чтобы получить доступ к этим данным в другом месте, вы можете создать функцию "get", которая будет возвращать Subject
(который сам по себе Observable
) всякий раз, когда вам нужны данные.
Вот пример:
my-data.service.ts
myData: BehaviorSubject<number> = new BehaviorSubject<number>(0);
callApi() {
this.dbService.get('apiUrl').subscribe(
(data) = > this.myData.next(data) // Assuming data is a 'number'
);
}
getMyData() {
return this.myData.asObservable();
}
Теперь, чтобы использовать это в компоненте:
this.myService.getMyData().subscribe(
(data) => { /* Use the value from myData observable freely */ }
);
Или вы можете положиться на Angular async pipe (это очень удобный метод для работы с наблюдаемыми в вашем коде).