вы можете использовать кран:
return this.http.get<AgreementsModel[]>(`${this.baseUrl}outstanding-agreements`, {params})
.pipe(tap((x) => {this.data = x; }));
, и вам нужно, чтобы ваш API был согласованным, поэтому используйте of
, чтобы вернуть сохраненные данные:
if (this.data) {
return of(this.data);
}
, это преобразует его в наблюдаемые, хотя есть и лучшие способы кэширования наблюдаемых ответов, например, с помощью оператора shareReplay
:
private data$: Observable<AgreementsModel[]>;
public getOutstandingAgreements(userAgreementId?: number): Observable<AgreementsModel[]> {
let params = new HttpParams();
if (userAgreementId) {
params = params.set('userAgreementId', userAgreementId.toString());
}
if (!this.data$) {
this.data$ = this.http.get<AgreementsModel[]>(`${this.baseUrl}outstanding-agreements`, {params}).pipe(shareReplay(1));
}
return this.data$
}