#angular
Вопрос:
Существует служба, которая загружает данные с сервера:
@Injectable()
export class AddressingService {
public addressing: any[] = [];
public objectlInfo: any;
constructor(private httpClient: HttpClient) {}
loadAddressing(unom: number): Observable<any> {
return this.httpClient.get();
}
getObjectInfo(unom: number, version: string): Observable<any> {
return this.httpClient.get();
}
setAddressing(data) {
this.addressing = data;
}
getAddressing() {
return this.addressing;
}
}
Как лучше использовать сервис:
this.AddressingService.loadAddressing().subscribe((data) => {
this.AddressingService.setAddressing(data);
});
Или вот так:
loadAddressing(unom: number): Observable<any> {
return this.httpClient.get().subscribe((data => {
this.addressing = data;
});
}
Еще один способ создать наблюдаемое и заполнить его внутри сервиса.
Комментарии:
1. Это зависит от программиста, никаких жестких и быстрых правил
2. Служба должна предоставлять методы получения данных, а не их хранения.
3. В соответствующих компонентах, т. е. в идеале в памяти. Если вы хотите сохранить их, используйте localStorage.
4. Как я обычно поступаю в Angular, когда служба получает только данные, а затем компонент (или другая служба) обрабатывает данные. Мои услуги в основном являются однострочными , которые просто выполняют
return this.http.get<Type>("url");
, а затем мои компоненты подписываются на это, чтобы получить информацию5. Я думаю, что компонент не должен хранить данные, а только использовать и визуализировать. Поэтому любые манипуляции должны происходить на сервере, где я размещаю данные. Также назначьте данные изменяемым службам.