Wpis z mikrobloga

#programowanie #angular #typescript
Pytanko mam, jak najlepiej według zasad clean code ogarnąć coś takiego, że dwie niespokrewnione klasy używają takich samych danych np. jakiejś tablicy obiektów z responsa http (nie mogę użyć stora). Bez sensu, żebym i tu i tu wysyłał request skoro mogę to zrobić raz i przetrzymywać dane. Utworzyć jakiś serwis czy klasę, którą obie te klasy będą rozszerzały i w niej to pobrać?
  • 4
@LubieSzaszylkiZLublina: Zapytania http powinny i tak być robić w serwisie, nie w komponencie ;)

@Dominias: Ja bym przechowywał pobrane dane w serwisie i dodatkowo udostępnił ReplaySubject, który pomógłby automatycznie odświeżać dane w innych komponentach.

na przykład:

class SomeService {
private data;
public replaySubject = new ReplaySubject();

public getData(returnCached = false) {
if (returnCached && this.data) {
return of(this.data);
}

return this.httpClient.get(url)
.pipe(
tap(data => this.data = data),
tap(data => this.replaySubject.next(data),