Добро пожаловать в stackoverflow!
Как и в большинстве случаев в кодировании, у вас есть несколько вариантов.И не ясно, как связаны два указанных вами компонента (SearchbarComponent и SearchResComponent).
Подписаться на оба компонента
Это самый простой способ получить данныена оба компонента и не требует каких-либо отношений между ними.Но делает , затем получает данные дважды.Так что это может быть хорошим выбором для «начала работы» и создания рабочего прототипа, но может не подходить для производственного решения.
Подписаться на один компонент и передать данные другому
Эта опция также довольно проста, но зависит от того, как связаны компоненты.
Если один компонент является дочерним компонентом другого ... то есть он находитсяс другой стороны, вот так:
html компонента 1
<component2's selector></component2's selector>
Затем вы можете передать данные дочернему компоненту, используя Input
properties.
Buildкэш данных
Вы можете получить данные один раз и кэшировать их в сервисе.Этот параметр разбит на несколько дополнительных параметров.
Вы можете определить простое свойство в вашем DataService, в которое вы сможете извлекать данные и затем управлять кешем там.
ИЛИ вы можете определить HttpInterceptorи управляйте своим кешем там.
Недостатком этого подхода является то, что вы должны затем управлять кешем.Если пользователь добавляет или удаляет какие-либо элементы ... кэш должен быть признан недействительным.И через некоторое время другие пользователи, возможно, изменили данные, поэтому кэш должен быть признан недействительным.
Использовать библиотеку управления состоянием
Вы можете использовать состояниебиблиотека управления (например, NgRx).Он обрабатывает кэширование ваших данных и предоставляет их любому компоненту, который в них нуждается.Это отличное решение для приложения производственного качества ... но оно немного пугает новых разработчиков Angular, поскольку оно использует сложные функции, такие как RxJS.
Каждая из них - большая тема ...Я знаю, есть ли какой-то конкретный выбор, который вас интересует, и я могу дать некоторые подсказки для получения дополнительной информации.