Я новичок в angular, я работаю с другим разработчиком, который также является новичком, и мы обсуждаем, должны ли мы использовать наблюдаемые или нет.
searchResourcesBasic(queryResources: IQueryResourceEntityResource){
let params = new HttpParams();
params = params.append("resourceTypeId", queryResources.resourceTypeId.toString())
return this.http.get<ISearchResourceEntityResource[]>
(this._constructFullAPIUrl(`search/Resources`),
{ params });
}
searchProjectsBasic(projectResourceBasicSearch: IProjectResourceBasicSearch) {
const params = new HttpParams();
params.set('id', projectResourceBasicSearch.id.toString());
params.set('projectNum', projectResourceBasicSearch.projectNum);
params.set('projectName', projectResourceBasicSearch.projectName);
return this.http.get<IProjectResourceBasicSearch>(this._constructFullAPIUrl(`search/projects`), {
params });
}
Так что в соответствующем Компоненты, на которые мы подписываемся и получаем нужные нам данные, и нам нужно перенести их в другой компонент, который не имеет с ним никакого отношения (это не родительский или дочерний компонент).
Итак, мы искали решение в Google и мы обнаружили, что можем создать сервис для передачи данных
export class TransfereService {
private libraryData: ISearchLibraryItemResource[];
private resourceBasicData: ISearchResourceEntityResource[];
private currentSearchResults = new Observable<IProjectResourceBasicSearch>();
setLibraryData(data) {
localStorage.setItem("libraryItemsData", JSON.stringify(data));
this.libraryData = data;
}
getLibraryData() {
return this.libraryData;
}
//////////this is mine without observable/////////////
setResourceBasicData(data) {
localStorage.setItem("resourceBasicData", JSON.stringify(data));
this.resourceBasicData = data;
}
getResourceBasicData() {
return this.resourceBasicData;
}
//////////// This is his method with an observable/////////////////
setSearchResults(newSearchResults: Observable<IProjectResourceBasicSearch>) {
this.currentSearchResults = newSearchResults;
}
getSearchResults() {
return this.currentSearchResults;
}
}
По сути, у нас есть форма, при отправке мы вызываем API, получаем ответ, и мы должны отобразить его в другом представлении, я не не вижу смысла в использовании наблюдаемых снова при передаче данных между представлениями / компонентами.
///////////////////////////// ///////////////////////////////////////////////// Редактировать ////////////////////////////////////////////////// ///////////////////////// Основываясь на комментариях ниже, я должен добавить, что представление результатов может быть доступно в любое время, когда пользователь хочет, а не только когда он делает поиск и заполняет форму.
Разница в том, что если пользователь не выполнил поиск, представление результатов должно быть пустым.
Вот почему я вызываю API в представлении поиска, или представление с формой, как я ее называл выше.
И представление результатов должно иметь возможность обрабатывать несколько результатов, приложение имеет несколько представлений формы / поиска.
-Поиск service : вызов API с наблюдаемым (первый пример кода выше)
-Transfere service : получение данных из представления поиска для сохранения их в переменной и передачи это к представлению результатов (это та часть, в которой другой программист хочет добавить наблюдаемое).
-Поиск / представление формы : Форма заполнена -> добавить в службу, вызывающую API -> передать данные в службу передачи -> перенаправить в представление результатов
-просмотр результатов : поиск данных каждый раз, когда они открываются в ngOnInit, и, если они есть, он их отображает ( это где о программист подписывается на сервис передачи).
Данные не могут быть изменены или не должны быть изменены где-либо, если пользователь не выполняет новый поиск, но в этом сценарии я заменяю его в своем сервисе передачи. И у меня есть несколько переменных там для нескольких форм, которые приложение имеет