Как всегда, зависит от того, что вы хотите достичь.
Для очень простого случая (необходим только в одном месте для конкретного компонента) я считаю, что это не имеет большого значения с точки зрения производительности.
Наблюдаемые значения хороши, если иметь дело с , составляющим .
Представьте, что у вас есть служба, которая получает некоторые данные через API (назовем это "DogsAPI")
DogsAPIService:
getAllDogs (): наблюдаемый <> -> получить всех собак
getAllDogs(() => {
http.get("/dogs/all");
})
getAllDogsWithColor (color: String) -> подписывается на getAllDogs, затем фильтрует список с цветом
getAllDogsWithColor(color: String) = getAllDogs()
.pipe(
map(dog => dog),
filter(dog => dog.color == color)
)
getAllDogsWithColorAndFirstName (цвет: String, firstName: String) -> подписывается на
getAllDogsWithColor () и фильтры по firstName
getAllDogsWithColorAndFirstName(color: String, firstName:String) = getAllDogsWithColor(color)
.pipe(
filter(dog => dog.firstName == firstName)
)
Компонент на другом конце может подписаться на них и при необходимости выполнять другие различные операции в потоке.
Обычно подписка происходит по асинхронному каналу (интеллектуальный компонент пропускает наблюдаемый по каналу " your observable | async ", поэтому подписка происходит прямо перед использованием свойства.