Дочерний компонент получает данные из @Input или подписки на сервис? Что лучше?

У меня есть родительский компонент, дочерний компонент и служба. Родительский компонент подписывает объектные данные из службы. Дочерний компонент также должен отслеживать это изменение данных. Что лучше, дочерний компонент получает данные от своего родителя с помощью @Input или позволяет ему тоже подписаться на службу?

3 ответа

Примеры использования @Input()

  1. Когда у нас есть только одна-две иерархии
  2. Когда значение, которое мы передаем, используется другими компонентами

Сценарии использования службы

  1. Когда у нас много иерархии вниз и передача значений становится немного сложной
  2. Когда некоторые функции компонента зависят от некоторого значения компонента, которое может быть примерно на 10 иерархий вниз, поэтому в этом случае мы можем использовать подписку на службу, чтобы всякий раз, когда значение изменяется, мы можем автоматически использовать его в нашем компоненте
  3. Когда значение используется более чем одним компонентом

@Emmanuel Sayson Это зависит от варианта использования, если вы не обновляете данные о родителе, тогда лучше использовать службу. Сервис более понятен во вложенной иерархии

Если сервис предоставляет точные данные в желаемом формате, то лучше подписаться на сервис напрямую, чем зависеть от родительского компонента. Это снизит общую сложность кода, а также повысит производительность.

Родительский компонент может использоваться как оболочка или прокси в следующих сценариях:

  1. Сервис не предоставляет данные в точном формате, необходимом для дочерних компонентов.

  2. Многие дочерние компоненты полагаются на те же данные, которые предоставляет служба.

  3. Дочернему компоненту нужны данные, агрегированные из нескольких сервисов.

Другие вопросы по тегам