Дочерний компонент получает данные из @Input или подписки на сервис? Что лучше?
У меня есть родительский компонент, дочерний компонент и служба. Родительский компонент подписывает объектные данные из службы. Дочерний компонент также должен отслеживать это изменение данных. Что лучше, дочерний компонент получает данные от своего родителя с помощью @Input или позволяет ему тоже подписаться на службу?
3 ответа
Примеры использования @Input()
- Когда у нас есть только одна-две иерархии
- Когда значение, которое мы передаем, используется другими компонентами
Сценарии использования службы
- Когда у нас много иерархии вниз и передача значений становится немного сложной
- Когда некоторые функции компонента зависят от некоторого значения компонента, которое может быть примерно на 10 иерархий вниз, поэтому в этом случае мы можем использовать подписку на службу, чтобы всякий раз, когда значение изменяется, мы можем автоматически использовать его в нашем компоненте
- Когда значение используется более чем одним компонентом
@Emmanuel Sayson Это зависит от варианта использования, если вы не обновляете данные о родителе, тогда лучше использовать службу. Сервис более понятен во вложенной иерархии
Если сервис предоставляет точные данные в желаемом формате, то лучше подписаться на сервис напрямую, чем зависеть от родительского компонента. Это снизит общую сложность кода, а также повысит производительность.
Родительский компонент может использоваться как оболочка или прокси в следующих сценариях:
Сервис не предоставляет данные в точном формате, необходимом для дочерних компонентов.
Многие дочерние компоненты полагаются на те же данные, которые предоставляет служба.
Дочернему компоненту нужны данные, агрегированные из нескольких сервисов.