Ещё можно использовать flux-паттерн (к примеру, ngrx), хотя это kind of services
Так же можно что-то пробрасывать через @Attribute(), а не только Input()
Через FactoryResolver задать пропсы компонента напрямую.
Крайне экзотические [возможно, антипаттерны], которые видел на практике
У @ContentChild/@ContentChildren задать публичные свойства, тогда компонент-контейнер может смотреть в них. Использовалось внутри какой-то библиотечной пробрасываемой-директивы, чтобы избежать аналогичного биндинга для компонента
Ну, и как же без хранения в глобальной области видимости + declare, хотя такой подход возможен в рамках абсолютно любого фреймворка. Этот "шедевр" использовался вместе с ssr
Различные способы передачи данных в компоненты Angular